我在比较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