等しい文字列に対してstrcmpが0を返すのに問題があります。Strcmpが等しい文字列で等しい値を返さない
これは私のコードは、(とにかく関連部分)どのように見えるかです:メインで
struct person{
char name[30];
time_t date;
char destination[30];
char phone[30];
};
私が持っている:
struct person act_person;
int f = open("persons.txt", O_RDONLY | O_CREAT, S_IRUSR);
if(f == -1){
//open error
}
char city_name[30];
scanf(" %[^\n]s", city_name);
city_name[strcspn(city_name, "\n")] = 0;
//lseek(f, 0, SEEK_SET); //took it out as user alk suggested
while(read(f, &act_person, sizeof(act_person))){
act_person.destination[strcspn(act_person.destination, "\n")] = 0;
if(strcmp(act_person.destination,city_name)==0){
printf("%s\n",act_person.name);
}
}
close(f);
私は同様のバイトにまで書かれていたから読んでいるファイル人の構造体のサイズのチャンクので、それは動作する必要があります...まだ私はstrcmpを行うに関係なく同等に返されません。
編集:
:私はできるだけ早く私が行う方法を見つけ出すよう、ここでがダンプであるだけであること、利用者が示唆したように、問題を見つけるために、ファイルのhexdumpに対してを表示しようとするつもりです
デバッグする必要があります - 各文字列に含まれるバイト値を確認してください。 –
一般的なコメント:あなたは不満を感じていますが、最後の苦情は質問にあまり寄与しません。彼らはちょうど私に "この人は怒っていると思う。私が助けようとすれば、彼らはただ私に怒っているのだろうか?" –
大文字小文字の問題を取り除くために 'strcmpi'を試してみてください... –