我必须比较2个字符串,一个来自文件,一个来自用户输入,这里是文件:
Password
abcdefg
Star_wars
jedi
Weapon
Planet
long
nail
car
fast
cover
machine
My_little
Alone
Love
Ghast
Run Code Online (Sandbox Code Playgroud)
从行中获取字符串的代码很好但是用于比较2个字符串的代码没有给出正确的输出
int main(void){
int loop, line;
char str[512];
char string[512];
FILE *fd = fopen("Student Passwords.txt", "r");
if (fd == NULL) {
printf("Failed to open file\n");
return -1;
}
printf("Enter the string: ");
scanf("%s",string);
printf("Enter the line number to read : ");
scanf("%d", &line);
for(loop = 0;loop<line;++loop){
fgets(str, sizeof(str), fd);
}
printf("\nLine %d: %s\n", line, str);
if(strcmp(string,str) == 0 ){
printf("Match"); …Run Code Online (Sandbox Code Playgroud) 在C中,如果两个字符串相等,strcmp()函数返回0.当我给出这样的代码时,
char str[10] = "hello";
if(strcmp(str,strrev(str))==0)
{
printf("1");
}
else
printf("0");
Run Code Online (Sandbox Code Playgroud)
如果它是一个回文字符串,则应打印1,如果不是回文,则应打印0.但即使给定字符串"hello"不是回文,它也会打印1.哪里出错了?
我正在尝试在 c 中运行一个程序,该程序接收用户的文本文件和字符串,然后在文件中搜索该字符串。它不断出现分段错误,gdb 将我指向这个函数,但我不确定问题是什么。我很确定这与电话有关,strcmp但我不确定。任何有关此问题的帮助将不胜感激。
int inTable( const char *s )
{
int i;
for( i=0; i<numLines; ++i )
{
if( strcmp( st[i], s ) == 0 )
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我用c编写了一个代码,它从2个文件中读取,而不是将2个缓冲区与strcmp进行比较.对于某些字符串,即使我从完全相同的文件中读取,strcmp也会返回!= 0
有谁知道为什么?
这是代码的相关部分:
read_max[0]= read(fdin[0],read_buf,read_offset) ;
read_max[1]=read(fdin[1],read_buf2,read_offset);
if(strcmp(read_buf,read_buf2)){
same=1;
}
Run Code Online (Sandbox Code Playgroud)
我试图在这个论坛和其他论坛上检查答案,但我发现的唯一答案是添加了'\n'的情况.正如我在标题中写的那样,问题是它不会进入if,但它确实存在(因为它不会返回0)!事实并非如此.写字符串的方式是一样的.在版本中,有时strcmp正常工作.
例如,如果文件以空格或\n开头,则会出错.谢谢!
在C中,我有一个字符数组:
d[20]
Run Code Online (Sandbox Code Playgroud)
使用空终止字符为"if"赋值:
d[0]='i'
d[1]='f'
d[2]='\0'
Run Code Online (Sandbox Code Playgroud)
该值应strcmp(d,"if")为0吗?为什么?
我希望strcmp返回值0.当我运行它时,我得到值-1
首先抱歉我的英语不好。
我有两个二进制文件。
我将二进制文件分别存储到缓冲区中。
然后我使用 strcmp() 比较了两个缓冲区。
strcmp() 的结果为零。
所以我认为两个二进制是相同的。
打开两个二进制文件,然后检查是否有差异。
但我发现差别不大。
问题是什么?
strcmp() 函数不是将二进制与二进制进行比较的正确方法?
那么这个问题就是关于C和C++的问题strcmp.
我遇到了这个链接:C库函数 - strcmp().
在这里,它解释了返回值strcmp.我知道每个功能,无论多么安全,都会失败.因此,我知道甚至strcmp可能在某个时候失败.
此外,我遇到了这个问题,也解释了返回值strcmp.经过大量搜索,我找不到一个解释如何检查是否strcmp会失败的网站.
我首先想到它会返回-1,但事实证明,如果第一个字符串较小,它会返回数字<0.那么有人可以告诉我如何检查是否strcmp失败.
编辑:好吧,我不明白strcmp没有失败的意义.函数失败的方法有很多种.例如,在一条评论中,写道如果堆栈没有扩展,可能会导致堆栈过低.没有任何语言的程序是绝对安全的!