使用%s参数

时间:2018-03-22 08:31:30

标签: c printf

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

以下是保存数据的结构:

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 lane,Test City,testtest,XYZ,12345,123-456-6789,789-456-6123,ttest @ gmail.com

1 个答案:

答案 0 :(得分:3)

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

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