嘿傢伙我是一個相對較新的程序員在C,我試圖簡單地將輸入文件中的內容打印到我的屏幕上。我必須使用動態內存分配,我面臨的問題是如果字符串中的字母數大於8,它會覆蓋它。動態內存分配從輸入文件的數組字符串
int main(){
FILE *input = fopen("inpit.txt","r");
int b;
char **aPtr;
int i = 0;
int j = 0;
fscanf(input,"%d",&b); //takes first value from input file which tells me number of strings in the file
aPtr = (char **)malloc(sizeof(char *)*b);
for(i=0;i<b;i++) {
aPtr[i]=(char *)malloc(sizeof(char));
}
for(i = 0;i < b;i++){
fscanf(input,"%s",&aPtr[i]);
}
for(i = 0;i < b;i++){
printf("Address %d = %d\n",i,&aPtr[i]);
}
for(i = 0;i < b;i++){
printf("%s\n",(aPtr+i));
}
return 0; }
我輸入到文件inpit1.txt是:
5
grapefruit
apple
Banana
monkey
orange
如果我運行該文件。除了葡萄柚之外,一切都會打印出來。這將被覆蓋到grapefruapple。
任何幫助,將不勝感激。先謝謝你。
你可能已經得到了更好的結果,如果你沒有在C項目尋找C++文檔!不要爲外語添加標籤!並且不要將'malloc'和朋友的結果放在C中! – Olaf
哦,並正確縮進你的代碼! 'main'的簽名是錯誤的!寫100次:「C不是C++不是C!」 – Olaf
@Olaf寫100遍:「C不是C++不是C!」哈哈好:) – LBes