问:如何比较C中文本文件中的字符?
因此,我希望能够执行检入,将输入文件的第一个字符与某个字符进行比较(在本例中为*),如果不匹配,则打印“Hello world” 我能从文件中读入。但是strcmp()不允许我比较输入文件字符和声明的字符问:如何比较C中文本文件中的字符?,c,compare,text-files,C,Compare,Text Files,因此,我希望能够执行检入,将输入文件的第一个字符与某个字符进行比较(在本例中为*),如果不匹配,则打印“Hello world” 我能从文件中读入。但是strcmp()不允许我比较输入文件字符和声明的字符 int main(void) { FILE *file = fopen("text.txt", "r"); char c; char compare[] = "*" do { c = fgetc(file); com
int main(void)
{
FILE *file = fopen("text.txt", "r");
char c;
char compare[] = "*"
do
{
c = fgetc(file);
compare = strcmp(c,compare); //Something is wrong here I think.
printf("result: %d \n", compare);
}
while (c != EOF);
fclose(file);
return 0;
}
函数
strcmp
比较两个字符串。
您试图将单个字符与以null结尾的字符串进行比较“*”
。我甚至不确定您发布的这段代码是否会编译,因为strcmp
将两个char*
作为参数,但您正在传递一个char
作为第一个参数
此外,您希望字符指针返回strcmp
,但strcmp
返回int
这里有一个关于的参考资料。如果您不确定标准库函数,请使用此网站。但是,在这种情况下,我敦促您为您的问题找到一个不同的、更简单的解决方案(提示:
strcmp
不需要比较char
s),并练习阅读编译器警告/错误 函数strcmp
比较两个字符串。
您试图将单个字符与以null结尾的字符串进行比较“*”
。我甚至不确定您发布的这段代码是否会编译,因为strcmp
将两个char*
作为参数,但您正在传递一个char
作为第一个参数
此外,您希望字符指针返回strcmp
,但strcmp
返回int
这里有一个关于的参考资料。如果您不确定标准库函数,请使用此网站。但是,在这种情况下,我敦促您为您的问题找到一个不同的、更简单的解决方案(提示:
strcmp
不需要比较char
s),并练习阅读编译器警告/错误 strcmp不比较字符,它是一个循环,比较两个字符数组,直到它们之间存在差异或两个字符串同时以空字符终止
如果要比较两个字符,您要做的是直接比较两个字符,如中所示
char * string1 = "string1";
char * string2 = "string2";
if (string1[0] != string2[0])
puts("hello world");
还是你的情况
if (c != compare[0])
puts("hello world");
但是,由于您的比较只有一个字符,并且您希望只比较一个字符,因此最好只将其声明为char,例如
char compare = '*';
...
if (c != compare)
puts("hello world");
strcmp不会比较一个字符,它是一个循环,比较两个字符数组,直到它们之间存在差异或两个字符串同时以空字符终止 如果要比较两个字符,您要做的是直接比较两个字符,如中所示
char * string1 = "string1";
char * string2 = "string2";
if (string1[0] != string2[0])
puts("hello world");
还是你的情况
if (c != compare[0])
puts("hello world");
但是,由于您的比较只有一个字符,并且您希望只比较一个字符,因此最好只将其声明为char,例如
char compare = '*';
...
if (c != compare)
puts("hello world");
你可以这样做(这只是给你一个想法):
#包括
内部主(空)
{
FILE*FILE=fopen(“text.txt”、“r”);
字符c;
字符比较='*';
做
{
c=fgetc(文件);
if(c==比较)
printf(“结果:%c\n”,比较);
}
而(c!=EOF);
fclose(文件);
返回0;
}
你可以这样做(这只是给你一个想法):
#包括
内部主(空)
{
FILE*FILE=fopen(“text.txt”、“r”);
字符c;
字符比较='*';
做
{
c=fgetc(文件);
if(c==比较)
printf(“结果:%c\n”,比较);
}
而(c!=EOF);
fclose(文件);
返回0;
}
Awesome它成功了。但是,它只有在我以这种形式创建函数时才起作用:“if(c!=compare[0])”如果我没有放入[0],那么程序无法编译。这是因为您没有将compare定义为字符,而是将其定义为字符数组。字符数组的值是内存中第一个字符的位置值,这不是您想要的,您需要第一个字符的值,因此必须使用方括号数组访问语义选择它。但是,它只有在我以这种形式创建函数时才起作用:“if(c!=compare[0])”如果我没有放入[0],那么程序无法编译。这是因为您没有将compare定义为字符,而是将其定义为字符数组。字符数组的值是内存中第一个字符的位置值,这不是您想要的,您需要第一个字符的值,因此必须使用方括号数组访问语义来选择它