gpt4 book ai didi

c - printf(%s),字符串问题...本质上,%s 导致行覆盖。

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

好吧,为了合理地了解正在发生的事情......

我正在将 csv 表中的数据读入二维数组,如下所示:

tableFile = fopen(argv[4], "r");
char tableArray[30][50][256];
char c;
int i=0, j=0, k=0;
while(c != EOF){

c = fgetc(tableFile);

switch(c)
{
case ',':
tableArray[i][j++][k]='\0';
k=0;
break;
case '\n':
tableArray[i++][j][k]='\0';
j=0;
k=0;
break;
default:
tableArray[i][j][k++] = c;
break;
}
} //end file transfer

fclose(tableFile);

读完文件后,我做了一堆无关紧要的垃圾,但问题是,当我打印从上述表 printf 获取的数据中的某些内容时,我吓坏了。

例如,如果我尝试说类似的话。

 char *string = malloc(256*sizeof(char));
string = tableArray[9][46];
printf("What the heck is going on with this string %s ", string);

看到 %s 后面的空格了吗?它实际上会覆盖“W”并且 printf 会显示类似“帽子,这个强大的 HELLO 正在发生”

有什么想法吗?!?!

谢谢!

最佳答案

您的读入行以 '\r' 结尾。您应该在 switch 中专门处理 '\r' 情况。

关于c - printf(%s),字符串问题...本质上,%s 导致行覆盖。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12692225/

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