我正在测试一个小程序,它主要比较 2 个输入字符串是否相同(如 strcmp 所做的那样)。
我想做类似的事情(用户在同一行键入 2 个所需的字符串)。在这种情况下,它应该返回“两个字符串不同”
./a.out foo bar
我应该这样做来读取用户的输入字符串吗?
scanf("%s %s", str1, str2);
或
gets(str1); gets(str2);
这是我目前所拥有的(由于某些原因它似乎陷入了无限循环)
int mystrcmp(char str1[], char str2[]) {
int i = 0;
while (str1[i] == str2[i]) {
if (str1[i] == '\0' || str2[i] == '\0') break;
i++;
}
if (str1[i] == '\0' && str2[i] == '\0')
return 0;
else
return -1;
}
int main(int argc, char * * argv) {
int cmp;
char str1[1000], str2[1000];
scanf("%s %s", str1, str2);
//gets(str1); gets(str2);
cmp = mystrcmp(str1, str2);
if (cmp == 0)
printf("The two strings are identical.\n");
else
printf("The two strings are different.\n");
return 0;
}
最佳答案
两者都不应该。相反,我建议您了解如何通过 argc
和 argv
参数将命令行参数传递给 main
函数。
我建议你试试这个程序来帮助你理解:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("argc = %d\n", argc);
for (int a = 0; a < argc; ++a)
printf("argv[%d] = \"%s\"\n", a, argv[a]);
}
对于您的示例调用
./a.out foo bar
上面的程序会打印
argc = 3
argv[0] = "./a.out"
argv[1] = "foo"
argv[2] = "bar"
关于c - 传递 2 个输入字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32404219/