当前位置: 技术问答>linux和unix
一个c程序的小问题,请大虾指教
来源: 互联网 发布时间:2016-06-05
本文导语: 这个程序从文件OID中读取一行,然后用strncat函数将temp数组的内容连接到读出来的那一行的后面 程序能运行但是结果是下面这样的: .1.3.6.1.2.1.1.1 .1.3.6.1.2.1.1.1D���'�.254 我原本期待的结果是:.1.3.6.1.2.1.1.1.254 不知...
这个程序从文件OID中读取一行,然后用strncat函数将temp数组的内容连接到读出来的那一行的后面
程序能运行但是结果是下面这样的:
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.1D���'�.254
我原本期待的结果是:.1.3.6.1.2.1.1.1.254
不知道中间的那堆乱码(D���'�)怎么消除,我自个估计是从文件中读取一行后结果有个n字符,我用s2的目的就是想在s中消除n字符,然后再连接temp数组
但是没用,请大虾指教了,十分感谢!
我用的是ubuntu8.10的系统
#include
#include
int
main(void)
{
char s[100] = "192.168.10";
char s2[100];
char temp[] = ".254";
FILE *fp;
int len;
fp = fopen("./OID","r+");
fgets(s,100,fp);
len = strlen(s);
if(s[len - 1] == 'n')
len --;
memcpy(s2,s,len);
strncat(s2,temp,strlen(temp));
printf("%sn",s);
printf("%sn",s2);
return 0;
}
程序能运行但是结果是下面这样的:
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.1D���'�.254
我原本期待的结果是:.1.3.6.1.2.1.1.1.254
不知道中间的那堆乱码(D���'�)怎么消除,我自个估计是从文件中读取一行后结果有个n字符,我用s2的目的就是想在s中消除n字符,然后再连接temp数组
但是没用,请大虾指教了,十分感谢!
我用的是ubuntu8.10的系统
#include
#include
int
main(void)
{
char s[100] = "192.168.10";
char s2[100];
char temp[] = ".254";
FILE *fp;
int len;
fp = fopen("./OID","r+");
fgets(s,100,fp);
len = strlen(s);
if(s[len - 1] == 'n')
len --;
memcpy(s2,s,len);
strncat(s2,temp,strlen(temp));
printf("%sn",s);
printf("%sn",s2);
return 0;
}
|
貌似你复制 s 到 s2 时,没有复制结束字符,需要加上结束字符 '':
#include
#include
int
main(void)
{
char s[100] = "192.168.10";
char s2[100];
char temp[] = ".254";
FILE *fp;
int len;
fp = fopen("./OID","r+");
fgets(s,100,fp);
len = strlen(s);
if(s[len - 1] == 'n')
s[len - 1] = 0;
memcpy(s2, s, len);
strncat(s2, temp, strlen(temp));
printf("%sn",s);
printf("%sn",s2);
return 0;
}
|
char s[100];
memset(s, 0, sizeof(s));
strcpy(s,"192.168.10");
或者如楼上所说:
char s[100] = "192.168.10";
memset(s, 0, sizeof(s));
strcpy(s,"192.168.10");
或者如楼上所说:
char s[100] = "192.168.10";