C字符串

想把一列台站名输出成一行,用空格隔开,写了个C。

fgets(buff,1024,fp);
strncpy(temp,buff,strlen(buff)-1);
printf('%s ',temp);

发现当台站名由长变短时,会“继承”上一个台站的后面几个字符,比如前一个台站名为L5317,而后一个为Y02时,前一个正确,而后一个会变成Y0217.怀疑是temp保存了上一次的’\0’的位置,所以在每次printf后强行temp[0]=’\0’,发现没用,考虑是上次的字符串终止符还在。
我试了以下几种方法,都行:

1 每次printf后,temp[strlen(a)-1]=’0’;

2 用malloc给temp分配内存,读到了新的,就realloc一次,记得最后free掉;   temp=(char *)realloc(temp,sizeof(char)*(strlen(buff)-1))

3 直接把buff数组的最后一个值换成’\0’,然后输出buff。 buff[strlen(buff)-1]=’\0′

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注