sscanfでの読み込みの不具合

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
タマ

sscanfでの読み込みの不具合

#1

投稿記事 by タマ » 14年前

windows visual studio 2008を使っています。
sscanfを利用して、空白のある行の文字も読み込むように
したいのですが、なかなかうまくいきません。
下のコードでのrow、col、valueの値が大きくなってしまいます。
どうすれば正しく表示されるでしょうか?

コード:

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

int main(void){
	int row,col,value,gyouretu;
	char buf[1024];
	FILE *fin;
	if ((fin = fopen("data1-1.txt", "r")) == NULL) {
		printf("file open error!!\n");
		return 1;	
	}
	
	if(fgets(buf,sizeof(buf),fin)!=NULL){
		sscanf(buf,"%d",&gyouretu);
		printf("gyouretu=%d\n",gyouretu);
	}

	while(fgets(buf,sizeof(buf),fin)!=NULL){
		sscanf(buf,"%d %d %d",&row,&col,&value);
		printf("row=%d col=%d value=%d\n",&row,&col,&value);
		/*文字列の処理*/
	}
	fclose(fin);
	return 0;
}
data1-1.txtというのは、

コード:

9
0 1 1
0 2 4
0 3 2
1 2 2
1 4 7
2 3 3
2 4 1
2 5 5
3 6 3
4 5 3
4 7 5
5 6 4
5 7 3
6 8 6
7 8 2
こんな感じのものです。空白の無い1行目はちゃんと読み込めています。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: sscanfでの読み込みの不具合

#2

投稿記事 by ISLe » 14年前

アドレスを表示してしまってますよ。

あとscanf系関数は空白文字を読み飛ばす仕様なので、書式指定文字列に空白を含めなくて良いです。
"%d %d %d" → "%d%d%d"

タマ

Re: sscanfでの読み込みの不具合

#3

投稿記事 by タマ » 14年前

20行目の%を取り除いたらちゃんと表示できるように
なりました、ありがとうございます。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: sscanfでの読み込みの不具合

#4

投稿記事 by ISLe » 14年前

タマ さんが書きました:20行目の%を取り除いたらちゃんと表示できるように
なりました、ありがとうございます。
&ですね。

閉鎖

“C言語何でも質問掲示板” へ戻る