【发布时间】:2019-03-31 22:01:21
【问题描述】:
我不明白为什么当“i”正确递增时,我的数组的第一个值会在内部 while 循环之外更改。我是否以一种搞砸的方式分配内存?我该如何解决这个问题?
int main(void)
{
int sizeArray = 5, sizeString = 10;
FILE *fin = fopen("file.txt", "r");
char ** arr = (char **) malloc(sizeArray * sizeof(char *));
char line[1000];
char *word;
int i = 0;
while(fgets(line, 100, fin) != NULL)
{
word = strtok(line, " ");
while (i < 2)
{
arr[i] = (char *)malloc(sizeString * sizeof(char));
arr[i] = word;
printf("Inner print: %s\n\n",arr[0]);
word = strtok(NULL, " ");
i++;
}
}
printf("This is the final arr[0] (outer print): %s",arr[0]);
}
file.txt 读作:
First second.
Third! Fourth
我的控制台打印如下:
Inner print: First
Inner print: First
The final arr[0] (outer print): Third!
当我希望外部打印是:首先
【问题讨论】:
-
arr[i] = word;可能不符合您的要求。使用strcpy复制字符串。