#include <stdio.h>
#include <string.h>
int in_mot(char *str) //check whether input from text file in mot table
{
FILE *fp_mot;
int i = 0, j = 0, r;
char check[300], first_field[7];
fp_mot = fopen("mot.txt", "r");
while (1)
{
if (fgets(check, sizeof(check), fp_mot) == NULL)
{
printf("EOF");
return 0;
}
else
{
i = 0;
for (i = 0; i < 7; i++)
first_field[i] = 0;
i = 0;
while (check[i] != ' ')
{
first_field[i] = check[i];
i++;
}
first_field[i] = '\0';
if (strcmp((char*)str, (char*)first_field) == 0)
{
puts(first_field);
return 1;
}
}
}
if (j == 18)
return 0;
}
int main()
{
char temp[30], wc[10], str[4][10];
int i = 0, j = 0, k = 0, z;
FILE *fp;
int LC = 0, RC = 0, STP = 1;
fp = fopen("ip.txt", "r");
while (1)
{ //1-break a line and store in array of strings(str)
if (fgets(temp, 30, fp) == NULL)
break;
else
{
j = 0; i = 0;
while (j < 3)
{
k = 0;
for (z = 0; z < 10; z++)
wc[z] = 0;
while (temp[i] != ' ' && temp[i] != ',')
{
wc[k] = temp[i];
i++;
k++;
}
i++;
wc[k] = '\0';
strcpy(str[j], wc);
j++;
}
}
//str[0][3] = '\0';
if (in_mot(str[0]))
{
//printf("\n yesssssssss");
}
}
return 0;
}
str
およびfirst_field
は私の2つの文字列です。 puts()
によって、両方の文字列が等しい場合、それらは同じ出力を出力しますが、strcmp()
はゼロ以外の値を返しますか? str
とfirst_field
は文字列と見なされますか? strlen
で長さを印刷しようとしたところ、出力が表示されませんでした。Cの文字列比較関数
その後、彼らは唯一の*外観*同じ:ここ
は、バッファオーバーフローをチェックし、報告したバージョンです。 –
'strlen'を印刷してみてください。それは印刷できない文字のために異なる可能性があります – StoryTeller
@ash /とあなたのテストデータを使って完全なテストプログラムを提供してください。さもなければ、あなたの観察は再現可能ではありません。 – Scheff