我正在尝试用一维字符数组构建二维数组,每次遇到一个换行符时,该字(包括该换行符)都会被复制到二维数组元素中。这是代码,这正是我需要的,但我对此几乎没有任何疑问。
让我提醒您,这只是我程序代码的一部分 所以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);
非常感谢,对于菜鸟问题感到抱歉。
答案 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
....