我在阅读文件时遇到问题,直到遇到一个单词,这就是我所做的,但我不认为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;
}
}
答案 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;
}