gpt4 book ai didi

c - Strcmp 在相等的字符串上不返回相等

转载 作者:行者123 更新时间:2023-11-30 20:36:23 25 4
gpt4 key购买 nike

我无法让 strcmp 对于相等的字符串返回 0。

这就是我的代码的样子(无论如何都是相关部分):

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);

我正在读取的文件被写入类似字节大小的 person 结构 block 中,因此它应该可以工作......但无论我做什么 strcmp 都不会返回相等。

编辑:一旦我弄清楚如何做到这一点,我将尝试显示文件的十六进制转储以帮助找到用户建议的问题

这是转储:

Hexdump of persons.txt

最佳答案

因此,这会将文件中的第一条记录读入 act_person。文件中的数据将为您提供:

.name = "Mark"
.date = 0x56f821fc
.destination = "\xb5\xd9\xc1\x95\xac\x7f"
.phone = "361444555"

然后,您将读取输入的名称与目标字段进行比较,毫不奇怪,它们不匹配。下一条记录的目的地同样似乎是垃圾。

关于c - Strcmp 在相等的字符串上不返回相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36250685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com