有人可以向他解释这段代码是如何工作的吗?

时间:2015-02-17 21:37:29

标签: c arrays

我正在尝试用一维字符数组构建二维数组,每次遇到一个换行符时,该字(包括该换行符)都会被复制到二维数组元素中。这是代码,这正是我需要的,但我对此几乎没有任何疑问。

让我提醒您,这只是我程序代码的一部分 所以numChars只是chars数组中的字符数。    numWords只是我拥有的单词数。    和单词被声明为char ** words。

int k=0;
int i=0;

char** words = (char**) malloc(sizeof(char*) * numWords);
words[k] = chars;
while(i < numChars)
{
    if(chars[i] == '\n')
    {
        k++;
        words[k] = (chars+i+1);
    }
    i++;
}
问题#1:第一个words[k] = chars做了什么? 问题2:有人可以向我解释这条线的工作原理words[k] = (chars+i+1);

非常感谢,对于菜鸟问题​​感到抱歉。

1 个答案:

答案 0 :(得分:0)

如果我假设chars是输入字符的数组

words[k] = chars;

将第一个单词指针设置为指向输入的第一个字符。写

会更清楚
words[0] = chars;

words[k] = (chars+i+1);

将第k个单词指针设置为指向chars中的第i + 1个字符。由于各种单词指针指向正确的起始字符但实际上并没有终止&#39; \ 0&#39;对于每个单词&#39;。因此,如果你打印每个单词[i],你将得到

the cat sat on the mat
cat sat on the mat
sat on the mat
....