gpt4 book ai didi

c - C 中带有 %s 参数的 printf() 和 fprintf() 调用的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 18:34:54 27 4
gpt4 key购买 nike

当我尝试按以下方式打印或写入数据时,它会自动将多个字符串连接成一个。

以下是保存数据的结构:

typedef struct Data{
int id;
char fname[10];
char lname[11];
char address[27];
char area[18];
char city[21];
char cityCode[3];
char pinCode[5];
char contact1[13];
char contact2[13];
char email[33];
}Data;

Data d;

当我尝试按以下方式打印时

printf("\nData is as follow:\n");
printf("\nID:%d",d.id);
printf("\nfname:%s",d.fname);
printf("\nlname:%s",d.lname);
printf("\naddress:%s",d.address);
printf("\narea:%s",d.area);
printf("\nCity:%s",d.city);
printf("\nCityCode:%s",d.cityCode);
printf("\npinCode:%s",d.pinCode);
printf("\ncontact1:%s",d.contact1);
printf("\ncontact2:%s",d.contact2);
printf("\nemail:%s",d.email);

这就是我得到的

Data is as follow:

ID:1
fname:abc
lname:xyz
address: 6649 N test lane
area:Test City
City:testtest
CityCode:XYZ12345 123-456-6789789-456-6123
pinCode:12345 123-456-6789789-456-6123
contact1: 123-456-6789789-456-6123
contact2:789-456-6123
email:ttest@gmail.com
2

当我尝试使用 fprintf() 将其写入文件时,发生了同样的事情。

1,abc,xyz 6649 N test lane,Test City,testtest,XYZ12345 123-456-6789789-456-6123,12345 123-456-6789789-456-6123, 123-456-6789789-456-6123,789-456-6123,ttest@gmail.com
2

我的主要目的是将数据写入文件中,以(,)分隔,数据为

1,abc,xyz, 6649 N 测试车道,Test City,testtest,XYZ,12345, 123-456-6789,789-456-6123,ttest@gmail.com

最佳答案

我只是在这里猜测,但如果我们看一下 cityCode 成员,它是一个由三个字符组成的数组。要成为三个字符的“字符串”,它需要四个个字符的空间,以包括终止'\0'字符。

确保所有数组都有空间,并且字符串终止符。

关于c - C 中带有 %s 参数的 printf() 和 fprintf() 调用的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49423856/

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