Проблема чтения и записи файла - PullRequest
0 голосов
/ 10 апреля 2011

Я написал следующий код. Я должен поменять теги на 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 ]

3 голосов
/ 10 апреля 2011

Вы не можете сравнивать строки, используя оператор ==, поскольку он будет сравнивать два указателя, а не строки, на которые они указывают, вы должны использовать strcmp(tag,"<bp>").

1 голос
/ 10 апреля 2011

Как говорили все люди в 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;
}
0 голосов
/ 10 апреля 2011

Ну, по крайней мере, вам нужно изменить это

tag=="<bp>"

на это

strncmp(tag,"<bp>",4) == 0
0 голосов
/ 10 апреля 2011

С одной стороны, if (tag == "<bp>") не подходит для C. Попробуйте strcmp http://www.elook.org/programming/c/strcmp.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...