我正在使用strcmp()功能来测试其工作方式。
好的,有strcmp(string1,string2)表示我们的string1比string2大或小。
这是我测试此功能的代码:
#include<stdio.h>
#include<string.h>
char string1[20];
char string2[20];
int main()
{
int test;
printf("Enter 'string1'\n");
scanf("%s",&string1);
printf("Enter 'string2'\n");
scanf("%s",&string2);
test=strcmp(string1,string2);
if(test>0)
printf("String 'string1' is greater than 'string2'\n");
else if(test<0)
printf("String 'string1' is less than 'string2'\n");
else if(test==0)
printf("\n String 'string1'is equal to 'string2'");
printf("\n The value of 'test' is :%d",test);
return 0;
}
测试变量始终为1,并且'string1'始终大于'string2'。 请帮助
答案 0 :(得分:1)
strcmp
不太可能是问题所在。您可以采取一些措施来解决问题。
scanf
时请确保防止溢出。scanf
的调用成功。strcmp
。&string1
来读取字符串。仅使用string1
。与string2
相同。printf("Enter 'string1'\n");
// Read at most 19 characters from the stream, leaving space
// for the null terminator.
if ( scanf("%19s", string1) != 1 )
{
// Problem reading into string1.
printf("Unable to read string1\n");
}
printf("Enter 'string2'\n");
if ( scanf("%19s", string2) != 1 )
{
// Problem reading into string2.
printf("Unable to read string2\n");
}
printf("Input strings...\nstring1: \"%s\", string2: \"%s\"\n", string1, string2);
答案 1 :(得分:1)
您应该这样写,因为问题出在scanf
:
printf("Enter 'string1'\n");
scanf("%s",string1);
printf("Enter 'string2'\n");
scanf("%s",string2);
尝试读取字符串/指针时,请勿使用&
。
例如:
char *str;
scanf("%s", str);
您可以使用fread(string1, 20, stdin)
来掩盖字符串溢出
您可以尝试输入代码here
答案 2 :(得分:0)