gpt4 book ai didi

c - 将 char 数组从指针复制到行文件后的奇怪输出

转载 作者:太空宇宙 更新时间:2023-11-04 08:42:01 25 4
gpt4 key购买 nike

我正在尝试读取数据并将其存储在某个文件中(我有另一个程序可以告诉我有多少行和列)。现在我尝试使用二维数组、指针和 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 指向 value,然后我使用 strcpy 将内容从 line(1) 复制到 p(1) 和 value[lenght][1]。

while 内的输出是正确的 p[0] 打印正确的数字,还有 p[1],等等。当我尝试在循环外打印值(以验证)时,我得到了一个奇怪的输出。

文件是ASCII,他的内容是(没有行,它们代表一个制表符):

1-2-3-44

2-33-4-5

22-3-5-12

此时的打印显示下一个(没有行,它们代表一个制表符):

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

最佳答案

您可能需要三行 1024 个字符。

使用这个 char value[1024][3]; 你有 1024 行,每行 3 个字符。

切换数组值和指针p的高宽。

关于c - 将 char 数组从指针复制到行文件后的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23173961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com