c语言弱问题 谢谢
我定义的结构体数组 ,
其中有一部分语句是把文本文件中每行(两个逗号分成三部分--结构体)的数据给一个数组元素,
结构体的大小是定了的
可是 比如中间的age[3],怎么也会把后面的addr也读入进来,输出显示的时候,居然是年龄连着后面的地址 然后地址还是地址的字符 我不是定义中限制大小了吗 以前遇到过这样的问题 解决了 但彻底想不起来了
哪位高手给看看
//データ用構造体定義
struct address{
char name[20];
char age[3];
char addr[40];
};
//構造体型(最大9件)配列定義
struct address addr[9];
for(i=0;i<9;i++)
{
//行でデータを取得する
fgets(str,100,fp);
//文字列strの先頭から第1のカンマを探し、最初に見つかる
p1=strchr(str,',');
//ポインタの指定
f=p1-&str[0];
//構造体nameに文字列strを先頭からf文字コピーする(nameを作成)
//printf("f=",f);
strncpy(addr.name,&str[0],f);
printf("\n%s\n",addr.name);
//第2のカンマを探し続く
p2=strchr(&str[f+1],',');
m=p2-&str[0];
//ageを作成
strncpy(addr.age,&str[f+1],m-f-1);
printf("%s\n",addr.age);
//第3のカンマを探し続く
p3=strchr(&str[m+1],'\n');
n=p3-&str[0];
//addrを作成
strncpy(addr.addr,&str[m+1],n-m-1);
printf("%s\n",addr.addr);
printf("%s,%s,%s",&addr.name[0],&addr.age[0],&addr.addr[0]);
}
最后这句打印出来就重复 而且特点是 年龄是两位数和以下就不重复 三位数就把地址部分也读进来了 但是是有时候 还不是所有的三位数年龄都重复
比如显示出来是
newname,234ssssssfff,sssffff
本应该是
newname,234,sssffff
也许说的有点不明白 但若能知道原因 请告诉我
|