我想保留一個動態分配的字符串數組,使用c中的讀系統調用讀入。這裏是什麼,我試圖做一個小樣本:calloc/malloc並讀取奇怪的行爲?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void processInput() {
char ** array = (char **) calloc(20, sizeof(char*));
int arrayIndex = 0;
while(1) {
printf("Type something: ");
fflush(stdout);
char* buffer;
int readResult = read(0, buffer, 100);
array[arrayIndex] = (char*)calloc(readResult, sizeof(char));
}
}
然而,這會導致一些奇怪的問題:
Type something: a Type something: Type something: a Type something: Type something: abcdefg Type something: Type something: Type something: Type something: Type something: Type something: Type something: Type something:
有沒有做任何解釋?我似乎無法弄清楚爲什麼會發生這種情況。
'char * buffer; readResult = read(0,buffer,100);'使用未初始化的變量 - 特別是未初始化的指針 - 只能以淚結束。 – 2012-01-09 04:08:55
你並沒有遞增'arrayIndex' – Kevin 2012-01-09 04:13:41
不好意思,這個例子有點草率。你是正確的,我沒有增加arrayIndex,但它不是重要的例子。但是,在實踐中,你需要增加arrayIndex是100%正確的。否則,它不會存儲索引0中最後添加的項目:P。 – Ryan 2012-01-09 04:17:09