我有两个字符串,一个是文件的第一行(" WORKING"),第二个是" WORKING"。问题在于,当我尝试将它们放入IF时,它说它们不一样!
我试图用printf命令读取它们,但它们是相同的。我也尝试过使用' \ n'在第二个字符串中,但没有任何变化。
这是代码,看看:
FILE *fl;
fl=fopen("test.txt", "r");
char line_working[100];
fscanf(fl, "%s\n", line_working);
fclose(fl);
printf("%s", line_working); //HERE IT PRINTS: WORKING
char* workinger="WORKING";
printf("\n%s", workinger); //HERE IT ALSO PRINTS: WORKING
getch();
if(workinger==line_working){
printf("OK");
getch();
}
没有任何反应......
答案 0 :(得分:3)
if(workinger==line_working){
比较指针。
workinger
是一个指针,表达式(比较)中使用的数组line_working
将转换为指向其第一个元素的指针,该元素等于&line_working[0]
。所以它确实解决了比较。但这不是你想要的。不幸的是,这种比较在C中是完全有效的。所以编译器在这里无法帮助你。
使用strcmp()
比较C字符串。
答案 1 :(得分:2)
答案 2 :(得分:1)
您的代码不会将您正确尝试比较的字符串与结果应该相等的假设进行比较,而是将字符串存储的内存位置进行比较。使用' =='你比较workinger的值(这是一个指针,所以变量值是一个内存地址)和line_working(这是一个数组,所以相应的值等于第一个元素的内存地址)
if (workinger==line_working)
要比较存储在相应内存位置的字符串,您应该使用字符串比较函数(请参阅此问题How do I properly compare strings?)