gpt4 book ai didi

c - strcmp 比较两个字符串时 word[0] 是什么意思

转载 作者:太空宇宙 更新时间:2023-11-04 07:48:21 24 4
gpt4 key购买 nike

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

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

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

另一个是:

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

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

    void tokenize(char *line, char **words, int *nwords);
int main()
{
char line[MAX_LINE], *words[MAX_WORDS], message[MAX_LINE];
int stop=0,nwords=0;

while(1)
{
printf("OSP CLI $ ");

/* my code*/

if (NULL==fgets(line , MAX_LINE, stdin))
return 0;
printf("%s",line);



/* my code ends */

/* read a line of text here */

tokenize(line,words,&nwords);

/* --Not using this code as i found my own---
if (strcmp (words[0], "exit")==0)
return 0;
*/
if (strcmp(line,"exit") == 0)
break;

最佳答案

char line[MAX_LINE];

line 是 MAX_LINE 长度的字符数组。由空字节终止的字符数组在 C 语言中通常称为“字符串”。

char *words[MAX_WORDS];

words 是一个 MAX_WORDS 长度的字符指针数组(读两遍)。

fgets(line , MAX_LINE, stdin)

来自 cppreference fgets :

Reads at most count - 1 characters from the given file stream and stores them in the character array pointed to by str. ... If no errors occur, writes a null character at the position immediately after the last character written to str.

fgets 将字符串存储在 line 数组中。

 tokenize(line,words,&nwords);

我不知道这个函数的来源,所以它可能做了一些魔术并且可能写入 words 数组,将指向有效字符串的指针分配给它。所以在它之后 words 数组被初始化为有效的字符串指针。

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

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

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

所以 words 是一个指针数组。我们采用第一个指针,即。 单词[0]。第一个指针可能指向一个空终止字符数组,它在 tokenize 中被初始化。所以 words[0] 可能指向一个有效的字符串(字符数组)。我们将该字符串与 "exit" 字符数组进行比较。

关于c - strcmp 比较两个字符串时 word[0] 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55509497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com