うまく認識されない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
YGKR
記事: 5
登録日時: 7年前

うまく認識されない

#1

投稿記事 by YGKR » 7年前

C言語でプログラミングをしている者ですが、データベース(dbs)ファイルから読み込み、入力した値と一致したら、ループを抜け出し番号を表示するプログラムがうまく実行できません。
同じ文字列を入力しているはずなのにif文でwhileから抜け出すことができず、iの値がいつも48になってしまいます(一致しなかった場合48になる)
何故なのかご教授お願いいたします...

コード:

#include <stdio.h>

int main(void) { 

	char ID_Name[32];
	char ID_Date[32];
	int i = 0;
	FILE *DateBase;

	DateBase = fopen("Date/DateBase.dbs","r");

	printf("----SettingFile----\n");
	printf("あなたのIDを入力してください\n");
	printf("ID:");

	scanf("%s", &ID_Name);
	
	printf("%s", ID_Name);

	while (1) {

		fgets(ID_Date, 32, DateBase);

		printf("%s", ID_Date);

		if (ID_Name == ID_Date)break;//ループから抜ける

		if (i == 48)break;

		i++;
	}

	printf("%d", i);

	fclose(DateBase);

	return 0;

}

box
記事: 2002
登録日時: 13年前

Re: うまく認識されない

#2

投稿記事 by box » 7年前

YGKR さんが書きました:

コード:

	scanf("%s", &ID_Name);
ここの & は不要です。
YGKR さんが書きました:

コード:

		fgets(ID_Date, 32, DateBase);
fgets()で読んだ内容の末尾には'\n'がくっついています。取り除いておくのが適切だと思います。その上で、
YGKR さんが書きました:

コード:

		if (ID_Name == ID_Date)break;//ループから抜ける
文字列同士の比較をする際は、strcmp()を使うのが適切だと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

YGKR
記事: 5
登録日時: 7年前

Re: うまく認識されない

#3

投稿記事 by YGKR » 7年前

正しく動きました!回答ありがとうございました!

閉鎖

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