通过strcmp比较word [0]是什么意思?

时间:2019-04-04 06:50:02

标签: c

我正在尝试比较两个字符串,如果答案等于0,那么它应该退出程序。

我可以通过两种方式做到这一点:

rmse(lmodtest,cvtest)

另一个是:

if (strcmp(line,"exit") == 0) 
        break;

我不明白上面代码中的word [0]是什么意思?

if (strcmp (words[0], "exit")==0)
        return 0;

1 个答案:

答案 0 :(得分:2)

char line[MAX_LINE];

line是MAX_LINE长度的字符数组。以空字节结尾的字符数组在C中通常称为“字符串”。

char *words[MAX_WORDS];

words是MAX_WORDS长度的字符指针数组(读取两次)。

fgets(line , MAX_LINE, stdin)

来自cppreference fgets

  

最多读取-从给定的文件流中读取1个字符,并将它们存储在str指向的字符数组中。 ...如果没有发生错误,请在最后一个写入str的字符之后的位置立即写入一个空字符。

fgetsline数组中存储一个字符串。

 tokenize(line,words,&nwords);

我不知道此函数的来源,因此它可能做一些魔术,并且可能写入words数组,并向其分配有效字符串的指针。因此,words数组将使用有效的字符串指针进行初始化。

if (strcmp(line,"exit") == 0) 

line数组中的空终止字符与{'e','x','i','t','\0'}数组进行比较。

if (strcmp(words[0], "exit") == 0) 

所以words是一个指针数组。我们取第一个指针,即。 words[0]。第一个指针可能指向在tokenize内部初始化的以空终止的字符数组。因此words[0]可能指向有效的字符串(字符数组)。我们将该字符串与"exit"字符数组进行比较。

相关问题