免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Law
打印 上一主题 下一主题

[C] 标准c怎么实现数字到字符转换? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-04-29 11:36 |只看该作者

标准c怎么实现数字到字符转换?

3ks
各位好心认!

论坛徽章:
0
12 [报告]
发表于 2003-05-01 21:01 |只看该作者

标准c怎么实现数字到字符转换?

楼上说的好象是不行的,这个问题有专门的算法的,有空的时候我贴一个吧!

论坛徽章:
0
13 [报告]
发表于 2003-05-01 22:29 |只看该作者

标准c怎么实现数字到字符转换?

要包含<string.h>;
sprintf(a,"%d",i);
就可以了

论坛徽章:
0
14 [报告]
发表于 2003-05-02 15:29 |只看该作者

标准c怎么实现数字到字符转换?

ltoa不行吗?

论坛徽章:
0
15 [报告]
发表于 2003-05-02 16:25 |只看该作者

标准c怎么实现数字到字符转换?

自己写一个吧,unix下好像是不支持数字转成字符串.
我这边刚好写了一个,你看能不能用吧

  1. 其中LINT代表字符数组
  2. 定义为  typedef unsigned long LINT[18];
  3. void convert_LINT_to_ch(LINT a, char* pa, unsigned radix)
  4. {
  5.   char  buf[20] = "\0";
  6.   int i;
  7.   for (i=0; i<18; i++)
  8.   {
  9.     char *p;                /* pointer to traverse string */
  10.     char *firstdig;         /* pointer to first digit */
  11.     char temp;              /* temp char */
  12.     unsigned digval;        /* value of digit */

  13.     p = buf;
  14.     firstdig = p;           /* save pointer to first digit */

  15.     do {
  16.       digval = (unsigned) (a[i] % radix);
  17.       a[i] /= radix;       /* get next digit */

  18.       /* convert to ascii and store */
  19.       if (digval >; 9)
  20.         *p++ = (char ) (digval - 10 + 'a');  /* a letter */
  21.       else
  22.         *p++ = (char ) (digval + '0');       /* a digit */
  23.     } while (a[i] >; 0);

  24.     /* We now have the digit of the number in the buffer, but in reverse
  25.     order.  Thus we reverse them now. */

  26.     *p-- = '\0';            /* terminate string; p points to last digit */

  27.     do {
  28.       temp = *p;
  29.       *p = *firstdig;
  30.       *firstdig = temp;   /* swap *p and *firstdig */
  31.       --p;
  32.       ++firstdig;         /* advance to next two digits */
  33.     } while (firstdig < p); /* repeat until halfway */

  34.     strcat(pa, buf);
  35.     if(i<17)
  36.       strcat(pa, ".");
  37.   }
  38. }
  39. 转换之后存在char *pa中,对应数组的每一项由'.'隔开
复制代码

论坛徽章:
0
16 [报告]
发表于 2003-05-03 05:51 |只看该作者

标准c怎么实现数字到字符转换?

我遇上和你一样的问题,sprintf不行,可能是我愚笨吧。
我用其他方法,非常笨的方法。
fp6=fopen("slg-dxx","w+";fprintf(fp6,"%5.2f",f1);fclose(fp6);
fp6=fopen("slg-dxx","r";fgets(st1,32,fp6);fclose(fp6);
就把f1的数字变成了字符。

论坛徽章:
0
17 [报告]
发表于 2003-05-03 10:02 |只看该作者

标准c怎么实现数字到字符转换?


  1. char str[20]
  2. int i=6222;

  3. sprintf(str,"%d",i);
复制代码


就这样使用sprintf

论坛徽章:
0
18 [报告]
发表于 2003-05-03 10:24 |只看该作者

标准c怎么实现数字到字符转换?

使用sprintf功能很强大的
sprintf(char *,"%format",……)
%farmat和printf的fatmat用法差不多
farmat前可以如同printf里一样限制格式

论坛徽章:
0
19 [报告]
发表于 2003-05-03 10:26 |只看该作者

标准c怎么实现数字到字符转换?

楼上分析得很对
其实printf,sprintf,fprintf功能和参数都一样
只是打印到的目标不一样

printf打印到屏幕
sprintf打印到字符串(第一个参数)
fprintf打印到文件(第一个参数)

另外本论坛中有hopecao写的一篇printf各选项说明

论坛徽章:
0
20 [报告]
发表于 2003-05-03 15:19 |只看该作者

标准c怎么实现数字到字符转换?

无双的代码

char str[20]
int i=6222;

sprintf(str,"%d",i);


在sco unix 下好象会出现memory fault(coredump)

就象下面的代码一样;
sscanf(k1,"%f",a1);
b=*a1+b;
//char  k1[32]
//float *a1,b=0
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP