我正在尝试将数据读取并存储在某个文件中(我有另一个程序告诉我我有多少行和列)。现在我尝试使用二维数组,指针和fgets将数据存储在文件中。
#include <stdio.h>
#include <string.h>
int main (void)
{
int i=0,b=0;
char value[1024][3];
char (*p)[3] = value;
char line[1024];
FILE *fp=fopen("text.txt", "r");
if(fp==NULL){
printf("\nThe file does not exist\n");
}
else{
while( fgets ( line, sizeof(line), fp ) != NULL )
{
strcpy(p[i],line);
printf ("%s",p[i]);
printf("\n");
i++;
}
printf ("%s",value[0]);
printf("\n");
}
return 0;
}
据我所知(我知道我错了......因为我有一个奇怪的输出)。 p指向值,然后我使用strcpy将内容从第(1)行复制到p(1)和值[lenght] [1]。
while内部的输出是ok p [0]打印正确的数字,也是p [1],依此类推。当我尝试在循环外打印值(验证)时,我得到一个奇怪的输出。
该文件为ASCII,其内容为(无行,代表标签):
1-2-3-44
2-33-4-5
22-3-5-12
while处的打印显示下一个(没有行,它们代表一个标签):
1-2-3-44
2-33-4-5
22-3-5-12
外面的打印显示下一个:
1-22-322-3-5-12
打印1行的前两个数字,第二行的前两个数字和完整的第三行。但是,如果我将p [0]更改为p [2],则会打印第三行而不会出现错误:
22-3-5-12
答案 0 :(得分:2)
你可能想要三行1024个字符。
使用此char value[1024][3];
,您有1024行3个字符。
切换数组值和指针p的高度和宽度。