我编写了以下代码。我应该用bill更改标签,但我的代码什么都不做。可能是什么问题?我的代码是这样的:
#include <stdio.h>
#include <string.h>
int main ()
{
FILE * pFile;
char tag [6];
char code[20]="bill";
pFile = fopen ("example.asm","r+");
if (pFile==NULL)
{
perror("Error");
}
else
{
while(!feof(pFile))
{
fgets(tag,5,pFile);
if((tag=="<bp>") && (!feof(pFile)))
{
fputs(code,pFile);
}
}
}
fclose(pFile);
return 0;
}
答案 0 :(得分:3)
您无法使用==
运算符比较字符串,因为它会在两个指针之间进行比较,而不是它们指向的字符串,您应该使用strcmp(tag,"<bp>")
。
答案 1 :(得分:1)
正如所有人在c中比较字符串时使用strncmp
或使用pointers
。
#include <stdio.h>
#include <string.h>
int main ()
{
FILE * pFile;
char tag [6];
char code[20]="bill";
pFile = fopen ("example.asm","r+");
if (pFile==NULL)
{
perror("Error");
}
else
{
while(!feof(pFile))
{
fgets(tag,5,pFile);
if((strncmp(tag, "<bp>") == 0) && (!feof(pFile)))
{
fputs(code,pFile);
}
}
}
fclose(pFile);
return 0;
}
答案 2 :(得分:0)
首先,if (tag == "<bp>")
不适合C.尝试strcmp
http://www.elook.org/programming/c/strcmp.html
答案 3 :(得分:0)
至少你需要改变这个
tag=="<bp>"
到这个
strncmp(tag,"<bp>",4) == 0