当前位置: 技术问答>linux和unix
请教有关 fork 和 sprintf 函数的问题
来源: 互联网 发布时间:2016-03-24
本文导语: 我编写了一段代码,中间 ...... unsinged int l; if(!fork()) { read(fd, &l, 4); printf("0x%08xn", l); sprintf(str,"0x%08x",l); printf("%s",str); ..... } ..... 这样用sprintf 是不是不对啊,前面的printf 打印出的结果正确...
我编写了一段代码,中间
......
unsinged int l;
if(!fork())
{
read(fd, &l, 4);
printf("0x%08xn", l);
sprintf(str,"0x%08x",l);
printf("%s",str);
.....
}
.....
这样用sprintf 是不是不对啊,前面的printf 打印出的结果正确,可是后面printf("%s",str) 却看不到结果,不知道怎么回事
其实主要想把十六进制的l 转变成字符串,这样如果不行的话,有没有其他 的方法,望等得到指点,谢谢!
......
unsinged int l;
if(!fork())
{
read(fd, &l, 4);
printf("0x%08xn", l);
sprintf(str,"0x%08x",l);
printf("%s",str);
.....
}
.....
这样用sprintf 是不是不对啊,前面的printf 打印出的结果正确,可是后面printf("%s",str) 却看不到结果,不知道怎么回事
其实主要想把十六进制的l 转变成字符串,这样如果不行的话,有没有其他 的方法,望等得到指点,谢谢!
|
问题肯定不是出在“16进制转字符串”这里。
不太明白流缓冲,可以在printf("%s",str);后面加上fflush(stdout)试试
弱弱的问一句,LZ给str分配空间了吗?比如str = (char*)malloc(20)之类的,或者改成char str[20]
|
LZ的sprintf本身没有问题,下面这小段代码可以验证。
如果printf的结果正确,说明read也没有问题。
剩下可疑的就是str了,不知道LZ怎么定义的?
int main(void)
{
unsigned int l;
char str[10];
if(!fork())
{
l = 100;
printf("0x%08xn", l);
sprintf(str,"0x%08x",l);
printf("%s",str);
}
}
如果printf的结果正确,说明read也没有问题。
剩下可疑的就是str了,不知道LZ怎么定义的?
|
printf("%s",str);
-------->>>>>
printf("%sn",str);
流缓冲的原因。
-------->>>>>
printf("%sn",str);
流缓冲的原因。