c - 这个字符串如何运行?

标签 c arrays string strcmp

这是一个电子词典程序。但是在这个程序中,dict[i][0]如何与空格进行比较。而且它会是真的。以及最后一个if部分如何与dict[i][0]进行比较到太空。请任何人解释一下。

#include<stdio.h>
#include<string.h>


int main(void)
{
    char dict[][2][40] = {
        "house","a place of dwelling",
        "car","a vehicle",
        "computer","a thinking machine",
        "program","a sequence of instruction",
        "",""
    };

    char word[80];
    int i;

    printf("Enter word: ");
    gets(word);

    i = 0;

    while(strcmp(dict[i][0], "")){
        if(!strcmp(word, dict[i][0])){
            printf("Meaning: %s", dict[i][1]);
            break;
        }
        i++;
    }

    if(!strcmp(dict[i][0], ""))
        printf("Not in dictionary\n");

    return 0;
}

最佳答案

在您的代码中,

 strcmp(dict[i][0], "")

不会将dict[i][0]与)空格进行比较,而是对字符串进行检查,该字符串是哨兵定义的数组的值。

另请注意,dict[i][0] 的类型是 char[40],它会衰减为 char *,所以无论如何,这都是 strcmp() 的有效参数。

关于c - 这个字符串如何运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41032898/

相关文章:

arrays - 将字符串转换为 UTF 8

arrays - Bash:如何用制表符分隔数组元素 - 并在同一行打印?

c - 需要基本食品银行计划帮助

c - 指定驻留在特定地址的类型

java - 猜谜游戏不计算相同的猜测两次

c++ - 如何保存字符串并按顺序读/写它们

java - 将 python stdout 读取为字符串

javascript - 将 Tagify javascript 数组转换为字符串

c - 奇怪的 C 语法 1 ["ABCDE"]?

c - 关于C函数指针的一个问题