【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21643

読み込んだファイルを分割して配列に格納する方法
投稿者---haru(2005/06/25 14:18:45)


読み込んだファイルを分割して配列に格納したいのです。。。
現在、fgets(num,定数,fp)で
96 ch=0 nt_on k=x48 v=x0 C5
というファイルを読み込もうとしているのですが、この1行全てがnum[0]に格納されてしまいます。スペースの箇所で分割して、num[0]からnum[5]までの配列に格納することは可能なのでしょうか?




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:読み込んだファイルを分割して配列に格納する方法 21644 まきじ 2005/06/25 14:28:12
<子記事> Re:読み込んだファイルを分割して配列に格納する方法 21647 si 2005/06/25 15:28:41


No.21644

Re:読み込んだファイルを分割して配列に格納する方法
投稿者---まきじ(2005/06/25 14:28:12)


>スペースの箇所で分割して、num[0]からnum[5]までの配列に格納することは可能なのでしょうか?

sscanf か strtok はでどうでしょうか?


この投稿にコメントする

削除パスワード

No.21645

Re:読み込んだファイルを分割して配列に格納する方法
投稿者---haru(2005/06/25 15:05:11)


>>スペースの箇所で分割して、num[0]からnum[5]までの配列に格納することは可能なのでしょうか?
>
>sscanf か strtok はでどうでしょうか?

どちらも使い方が良くわかりません…
現在入出力に使っているソースは以下のようなものなのですが、どのように組み込めばいいのでしょうか?

  #include <stdio.h>
  #include <stdlib.h>

  int main(int argc, char *argv[])
  {
      FILE *fp, *p;
      char num[10000];

      fp=fopen(argv[1], "r");
      p=fopen(argv[2], "w");

      while(fgets(num, 9999, fp) != NULL) {
          fputs(num, p);
      }

      fclose(fp);
      fclose(p);

      return 0;
  }


この投稿にコメントする

削除パスワード

No.21646

Re:読み込んだファイルを分割して配列に格納する方法
投稿者---まきじ(2005/06/25 15:08:07)


>どちらも使い方が良くわかりません…

使い方ぐらい、MSDNで調べましょう。
Google などで検索しても、サンプルは山ほどでてくると
思いますが。


この投稿にコメントする

削除パスワード

No.21647

Re:読み込んだファイルを分割して配列に格納する方法
投稿者---si(2005/06/25 15:28:41)


ちょっと前まで、頻繁に話題となっていました。scanf関数を使います。
暇なので、サンプル書きました。参考にしてください。
<pre>
#include <stdio.h>
#define MAX_LINE_SIZE 256
int main(int argc, char **argv)
{
char buf[MAX_LINE_SIZE];
char nt[4];
int num[6];
int n;
FILE *fp;
if ( argc < 2) {
printf("open する file が指定されていません。\n");
return 1;
}
fp = fopen(argv[1],"r");
if ( !fp) {
printf("file open エラー file: %s\n",argv[1]);
return 1;
}
fgets(buf, MAX_LINE_SIZE, fp);
n = sscanf( buf,"%x ch=%x nt_%s k=x%x v=x%x %x", num, num + 1, nt, num + 3, num + 4, num + 5);
if (n != 6) {
printf("入力エラー n= %d\n",n);
}
if (nt[1] == 'n' || nt[1] == 'N')
num[2] = 1;
else
num[2] = 0;
printf("%x %x %x %x %x %x\n",num[0],num[1],num[2],num[3],num[4],num[5]);
return 0;
}
</pre>
"96 ch=0 nt_on k=x48 v=x0 C5" で
nt_on は ブール値、on == 1,off == 0、他は16進数として得るものと仮定。

* pre が効かない?


この投稿にコメントする

削除パスワード

No.21652

Re:読み込んだファイルを分割して配列に格納する方法
投稿者---haru(2005/06/25 17:08:50)


>ちょっと前まで、頻繁に話題となっていました。scanf関数を使います。
>暇なので、サンプル書きました。参考にしてください。

なるほど。参考にさせていただきますね。ありがとうございます。


この投稿にコメントする

削除パスワード

No.21660

Re:読み込んだファイルを分割して配列に格納する方法
投稿者---Blue(2005/06/25 23:49:41)


内容と全然関係ないですが,
>* pre が効かない?

確認画面でチャントHTMLタグが解釈されていない場合、
掲示板ご利用上の注意の下のほうにもありますが、
ソース中の >< を変換されていない可能性があります。
(特にソース上の#includeのあとやfor文の条件式等)

参考サイト
IT用語辞典 e-Words : HTMLの特殊文字

特に、やりたいこと(ある部分の強調表示やリンクを貼る)がないのならば、
HTML昆布 to Cをご利用してみてはいかがでしょうか?
特殊文字の変換などを行ってくれてとても便利です。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧