当前位置: 代码迷 >> C语言 >> [求助]在字符串中插入千分符
  详细解决方案

[求助]在字符串中插入千分符

热度:174   发布时间:2006-04-29 01:52:00.0
[求助]在字符串中插入千分符
以下的程序是想输入一段数字,如果多于4位则插入千分符并输出,如果少于4位则原样输出
例如,输入12,则输出12;输入1234,则输出1,234;输入1234567,则输出1,234,567
但是程序编写有问题,请大侠指正
非常感激:



#include<iostream>
void main()
{
char c[20],inserter;
int len,i,index;
printf("please input the numbers:\n");
gets(c);
printf("the original numbers are:\n");
puts(c);
printf("after add the tag:\n");
len=strlen(c);
if(len<4)
puts(c);
else
{
for(i=len;i<0;i-=3)
{
inserter=',';
index=i-3;
c[index-1]=inserter;
}
puts(c);
}
printf("\n");
}
搜索更多相关的解决方案: 字符  

----------------解决方案--------------------------------------------------------
我这没有编译器
不过我看你这错误很多(函数头,循环条件,数据丢失。)
莫不如再设一个字符数组
每查3位加个‘,’应该比这个好实现
----------------解决方案--------------------------------------------------------

我写了个
[CODE]
#include "stdio.h"

int main()
{
char str[20];
int len,i;

gets(str);
len=strlen(str)%3;
for(i=0;str[i]!='\0';i++)
{
printf("%c",str[i]);
if( (i+1)%3==len && str[i+1]!='\0')
printf("%c",44);
}
printf("\n");
return 0;
}

[/CODE]


----------------解决方案--------------------------------------------------------
斑竹正解.算法不错.
----------------解决方案--------------------------------------------------------

只是有一点想说一下,最好定义字符串指针并为它分配一个空间,最后释放,程序的效率会提高;假如直接定义了字符数组,可能会浪费了一些空间.
代码:
======================================================
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int
main(void)
{
char *In_num;
int lenth;
int i;
In_num=(char *)malloc(sizeof(char *));
printf("Please input the num_string:\n");
gets(In_num);
lenth=strlen(In_num)%3;
for(i=0;In_num[i]!='\0';i++)
{
printf("%c",In_num[i]);
if( (i+1)%3==lenth&& In_num[i+1]='\0')
printf("%c",44);
}
printf("\n");
system("Pause");
return 0;

}


----------------解决方案--------------------------------------------------------
以下是引用lj_860603在2006-4-29 9:31:00的发言:

只是有一点想说一下,最好定义字符串指针并为它分配一个空间,最后释放,程序的效率会提高;假如直接定义了字符数组,可能会浪费了一些空间.
代码:
======================================================
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int
main(void)
{
char *In_num;
int lenth;
int i;
In_num=(char *)malloc(sizeof(char *));
if(In_num==NULL) //忘了检查分配是否成功;
{
printf("Can't get so many values.\n");
exit(1);
}
printf("Please input the num_string:\n");
gets(In_num);
lenth=strlen(In_num)%3;
for(i=0;In_num[i]!='\0';i++)
{
printf("%c",In_num[i]);
if( (i+1)%3==lenth&& In_num[i+1]='\0')
printf("%c",44);
}
printf("\n");
free(In_num); //刚忘了释放;
system("Pause");
return 0;

}

西西``不好意思,刚写得太急促,忘了两点东西.


----------------解决方案--------------------------------------------------------

谢谢


----------------解决方案--------------------------------------------------------
  相关解决方案