c - 传递 2 个输入字符串进行比较

标签 c

我正在测试一个小程序,它主要比较 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;
}

最佳答案

两者都不应该。相反,我建议您了解如何通过 argcargv 参数将命令行参数传递给 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/

相关文章:

c - 从终端读取的后台作业

c - Winsock 错误 1013 - 权限被拒绝

c - Linux 编译 Make 错误 : missing separator

c - 如何在 Windows 2000 上以字节为单位获取硬盘大小?

无法打印在循环中递增的变量值

c - 在c中解析char数组

c - c中的糟糕算术

c - 逗号运算符 , 有什么作用?

c - 可移植性问题 : aligning data, 字节顺序问题等

c - 同一项目文件中对 <函数名称> 的 undefined reference