嘿家伙我是一个相对较新的程序员在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