gpt4 book ai didi

c - 二维字符串数组的最后一个元素覆盖先前的数组元素

转载 作者:行者123 更新时间:2023-11-30 16:37:29 26 4
gpt4 key购买 nike

void read_char_from_file(FILE *fp, int formatted)
{
char sChar[16], eol;
int col=0, row=0,ind=0,count=0;
char *str2D[4][4]={{ "NULL" }};
while ( (fscanf(fp, "%s%c", sChar,&eol)) != EOF)
{
if(eol!='\n')
{
str2D[row][col]=sChar;
printf("Row: %d, Col: %d = %s\n",row, col,str2D[row][col]);
col++;
}
else {
str2D[row][col]=sChar;
printf("Row: %d, Col: %d = %s\n",row, col,str2D[row][col]);
row++;
col=0;
}
str2D[row][col]=0;
}

int i,j;
for (i=0; i < 3; i++)
{
for(j=0; j <3; j++)
printf("%s",str2D[i][j]);
}

}

上面的代码显示了 str2D 的最后一个元素,覆盖了之前的所有数组内容。我需要将 sChar 复制到二维字符串数组。

最佳答案

简短回答:

没有将内容复制到str2D[row][col]指向的内存位置,您只是将指针指向sChar。因此,无论 sChar 的最新内容是什么,都会被显示。

长答案:

您还有其他问题。首先,

  • {{ "NULL"}};{{ NULL }};
  • 不同
  • 您正在创建一个二维指针数组。在将任何内容存储到指针指向的内存位置之前,您需要确保它们指向一些有效的位置。

关于c - 二维字符串数组的最后一个元素覆盖先前的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47881209/

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