我正在尝试比较两个字符串,如果答案等于0,那么它应该退出程序。
我可以通过两种方式做到这一点:
rmse(lmodtest,cvtest)
另一个是:
if (strcmp(line,"exit") == 0)
break;
我不明白上面代码中的word [0]是什么意思?
if (strcmp (words[0], "exit")==0)
return 0;
答案 0 :(得分:2)
char line[MAX_LINE];
line
是MAX_LINE长度的字符数组。以空字节结尾的字符数组在C中通常称为“字符串”。
char *words[MAX_WORDS];
words
是MAX_WORDS长度的字符指针数组(读取两次)。
fgets(line , MAX_LINE, stdin)
最多读取-从给定的文件流中读取1个字符,并将它们存储在str指向的字符数组中。 ...如果没有发生错误,请在最后一个写入str的字符之后的位置立即写入一个空字符。
fgets
在line
数组中存储一个字符串。
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"
字符数组进行比较。