我需要读取文件,直到遇到“结束”

时间:2014-01-02 10:30:31

标签: c

我在阅读文件时遇到问题,直到遇到一个单词,这就是我所做的,但我不认为if语句允许在其中写入字符串

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int main()
{

  int i;
  char buffer[100];
  FILE *fptr = fopen("testing.txt", "r");
  if(fptr != NULL)
    printf("file opened successfully\n");
  else {
    printf("file error occured\n");
    printf("terminating program...\n");
    return 0;
  }

  while (fgets(buffer, 100,fptr))
  {
    if(buffer != "over") {
      printf("%s ", buffer);
    }
    else
      return 0;
  }

}

3 个答案:

答案 0 :(得分:3)

当你这样做时

if(buffer != "over")

比较两个指针,指向buffer的指针和指向字符串文字"over"的指针。那些指针永远不会是一样的。

要比较C中的字符串,您必须使用strcmp函数。

答案 1 :(得分:0)

要比较字符串,您需要使用strcmp()函数。你不能直接if(buffer != "over")做。它比较指针而不是蜇伤。

答案 2 :(得分:0)

#include <stdio.h>
#include <string.h>

int isEndWith(const char *string, const char *word){
    int len = strlen(string);
    int lenw = strlen(word);
    if(len >= lenw)
        return strncmp(string + len - lenw, word, lenw)==0;//or use strcmp
    else 
        return 0;
}

int main(void){
    char str1[] = "how are you over i am busy over\n";
    char str2[] = "how are you over i am busy over\n";
    char *p;
    if(p=strchr(str1, '\n'))
        *p = '\0';//chomp \n
    if(!isEndWith(str1, "over"))//check case end string
        printf("%s", str1);
    else {
        int len = strlen(str1);
        str1[len - 4] = '\0';// 4 : strlen("over");
        printf("%s\n", str1);//print "how are you over i am busy \n"
    }
    if(p=strstr(str2, "over"))//check case contain string
        *p = '\0';
    printf("%s\n", str2);//print "how are you \n"
    return 0;
}