问题描述
我有一个使用calloc创建的指针数组,我正在使用它在其中存储字符串,并且正在使用fscanf从文件中收集数据。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
FILE *fp;
int length,i;
fp = fopen("file.txt","r");
if (fp == NULL) {
printf("Error opening file\n");
exit(1);
}
char str[5];
char **rot = calloc(length,5);
fscanf(fp,"%d",&length);
for (i = 0; i < length; i++) {
if (fscanf(fp,"%s",str) == 1)
{
rot[i] = str;
printf("%s\n",rot[i]);
}
else
{
break;
}
}
printf("element: %s\n",rot[1]);
printf("element: %s\n",rot[0]);
printf("element: %s\n",rot[2]);
return 0;
}
我的文件中只有一行,它是这样的:6 a11 a22 a33 a44 a55 a66 a77
第一个值是一个整数,它告诉我接下来有多少个字符串。我正在使用fscanf将值和值存储在变量中,并尝试将它们分配到我的数组中,但是发生了一些奇怪的事情。
如果在分配值后立即在循环内打印值,它们将正确显示。但是,如果我退出循环后尝试打印,无论我选择什么索引,总是显示相同的值,而不是循环内显示的值
我得到的输出是:
a11
a22
a33
a44
a55
a66
元素:a66
元素:a66
元素:a66
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)