免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1752 | 回复: 17
打印 上一主题 下一主题

急切求助!盼望各位高手指点! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-20 16:31 |只看该作者 |倒序浏览
我式C语言新手,编程中遇到这样一个问题:
   要将一个float 类型的数据拷贝到字符串中,有什么好的办法吗?
我尝试用强制类型转换,没有做通。

还有一个问题:就是在我改造的程序中,需要将程序在屏幕上的输出结果原样保存到内存中,然后进行打包,发送。可是屏幕上的显示的表格化数据是在程序的很多个地方用printf()输出拼凑出来的。
   希望知道有没有好的,简单的解决办法。比如把屏幕的定向输出转向到一个void *指针,或者其他的方法。

希望各位高手能帮忙想个好的办法,先在这里谢谢各位了!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-02-20 16:36 |只看该作者

急切求助!盼望各位高手指点!

第一个: man sprintf

论坛徽章:
0
3 [报告]
发表于 2004-02-20 16:42 |只看该作者

急切求助!盼望各位高手指点!

sprintf只能处理字符串,可是我找不到办法将float类型数据转化到字符串,所以无奈。如果自己写一个转化函数,大家会不会笑我呆?

我现在就是用sprintf作了一个自定义函数,在每个输出的地方替代原来的printf,从而截取输出结果。可是,感觉自己象个钳工。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-02-20 16:49 |只看该作者

急切求助!盼望各位高手指点!

还是不了解sprintf的用法吧。

  1. #include        <stdio.h>;
  2. int main(void)
  3. {
  4.         float i = 1.2;
  5.         char b[20];
  6.         sprintf(b,"%f", i);
  7.         printf("%s\n",b);
  8.         return 0;
  9. }
复制代码

看看它的执行结果。

论坛徽章:
0
5 [报告]
发表于 2004-02-20 16:54 |只看该作者

急切求助!盼望各位高手指点!

请大家指点指点我该如何做更好

论坛徽章:
0
6 [报告]
发表于 2004-02-20 17:04 |只看该作者

急切求助!盼望各位高手指点!

不太明白你的意思,我理解也是同lenovo的,不过强烈建议使用snprintf代替sprintf!

论坛徽章:
0
7 [报告]
发表于 2004-02-20 17:18 |只看该作者

急切求助!盼望各位高手指点!

谢谢你们!! ^^
我重启到linux下改代码看看。

FH,我是希望不用到每个写着printf("   ", n);的地方用scanf();代替它。
我非常想找到一个简洁的办法: 就是 把应该输出到屏幕上的数据,字符等等保存到自己申请的一块内存中。  就好像重定向指令一样的意思 :
# vi  myreadme.txt >; output.log
好像其中 >; 符号的功能。

能给我点建议吗?  

论坛徽章:
0
8 [报告]
发表于 2004-02-20 17:20 |只看该作者

急切求助!盼望各位高手指点!

第一个问题很简单,安装lenovo或FH的做就是了。
第二个问题我想了一个方法,你可以一试,方法如下:
程序开始使用freopen把输出重定向到一个文件中。
在发送之前打开这个文件,读取里面内容,打包发送。
代码如下:

  1. for(;;)
  2. {
  3.         if((fpOut=freopen("文件名","w",stdout))==NULL)
  4.         {
  5.                 //错误处理
  6.         }
  7.         //在屏幕上打印若干信息,由于已经重定向过,这些内容会输出到文件中
  8.         printf(".....");
  9.         printf(".....");
  10.         ……
  11.         fclose(fpOut);
  12.         if((fpIn=fopen("文件名","r"))==NULL)
  13.         {
  14.                 //错误处理
  15.         }
  16.         //读取文件内容
  17.         fread(str,sizeof(str),1,fpIn);
  18.         fclose(fpIn);
  19.         //打包发送
  20. }//end of for
复制代码

论坛徽章:
0
9 [报告]
发表于 2004-02-20 17:28 |只看该作者

急切求助!盼望各位高手指点!

其实,snprintf不就是把字符和数据输出到内存中吗?
这个函数的返回码会告诉你它写了多少字符的,然后你把写指针做个移位就是了,很简单哪!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-02-20 17:33 |只看该作者

急切求助!盼望各位高手指点!

他的意思好像是既输出到屏幕,
又输出到一个文件里。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP