我在比較C中兩個相同的字符串時遇到了問題。使用方法strcmp()時,比較文本文件中的一行到用戶輸入時似乎存在問題。爲什麼即使用戶輸入與文本文件相同,strcmp()也會返回-1。如何在C中使用strcmp將用戶輸入與文本文件進行比較?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Person{
char fName[10];
char lName[10];
};
char inputUser[10];
int main()
{
FILE *file;
int ret;
char data[20];
file = fopen("file.txt", "r");
struct Person *p1 = malloc(sizeof(struct Person));
gets(inputUser);
strcpy(p1->fName , inputUser);
struct Person *p2 = malloc(sizeof(struct Person));
while (fgets(data , 20 , file) != NULL){
strcpy(p2->fName , data);
ret = strcmp(p1->fName, p2->fName);
printf("\t%d\t%s\t%s\n", ret , p1->fName, p2->fName);
}
fclose(file);
file = fopen("file.txt","a");
fprintf(file, "%s\n", p1->fName);
fclose(file);
}
你有沒有考慮將*換行*問題阿?用'gets'和'fgets'?爲什麼不使用'fgets(inputUser,20,stdin)'而不是'gets(inputUser)'? – dvhh
您的問題需要樣本輸入,預期輸出和實際輸出,然後纔是[mcve]。 –
請注意,fgets的輸入結果將包括尾隨換行符。如果換行符存在,則刪除換行符。 – BLUEPIXY