文件读写问题

时间:2011-04-10 10:49:52

标签: c

我编写了以下代码。我应该用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;
}

4 个答案:

答案 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