
c语言 从键盘上读入一个整型数,将其转化成字符串并输出。例如:输入123,则转换为字符串“123 20
c语言刚接触到指针不能用太复杂的函数或者指针我的想法是将该数逐位取出与‘0’然后相加之后存入字符串中去但不知道如何写求高手帮忙...
c语言刚接触到指针 不能用太复杂的函数或者指针 我的想法是将该数逐位取出与‘0’然后相加之后存入字符串中去 但不知道如何写 求高手帮忙
展开
2个回答
展开全部
库函数sprintf就能完成你要的功能,如果要自己实现,简单写了下,可能功能不是太完善:
#include <stdio.h>
#include <assert.h>
#include <string.h>
//在可以在参数的部分再加一个转换基数,radix, 可在取余的时候针对不同进制进行转换(此时负号情况就只有在radix==10的情况下考虑)
void my_itoa(char *buffer, const int num)
{
int temp = num, i = 0;
assert(buffer != NULL);
if (temp < 0)
{
buffer[i] = '-';//负数情况
i++;
temp = -temp;//变为正数,方便后面取余操作
}
for (;temp; i++)
{
buffer[i] = temp % 10 + '0';//循环取num最后一位,放到buffer中,直到0
temp /= 10;
}
if (num < 0)
//非标准库函数,可自己实现翻转字符串翻转(此处省去)
_strrev(&buffer[1]);//如果为负数,则只翻转负号后面的部分
else
_strrev(buffer);//全部翻转,把翻转过来的字符串再次翻转回来
}
int main(int argc, char *argv[])
{
int a = -123;
char str[32] = "\0";
my_itoa(str, a);
printf("%s\n", str);
sprintf(str, "%d", a);
printf("%s\n", str);
return 0;
}
#include <stdio.h>
#include <assert.h>
#include <string.h>
//在可以在参数的部分再加一个转换基数,radix, 可在取余的时候针对不同进制进行转换(此时负号情况就只有在radix==10的情况下考虑)
void my_itoa(char *buffer, const int num)
{
int temp = num, i = 0;
assert(buffer != NULL);
if (temp < 0)
{
buffer[i] = '-';//负数情况
i++;
temp = -temp;//变为正数,方便后面取余操作
}
for (;temp; i++)
{
buffer[i] = temp % 10 + '0';//循环取num最后一位,放到buffer中,直到0
temp /= 10;
}
if (num < 0)
//非标准库函数,可自己实现翻转字符串翻转(此处省去)
_strrev(&buffer[1]);//如果为负数,则只翻转负号后面的部分
else
_strrev(buffer);//全部翻转,把翻转过来的字符串再次翻转回来
}
int main(int argc, char *argv[])
{
int a = -123;
char str[32] = "\0";
my_itoa(str, a);
printf("%s\n", str);
sprintf(str, "%d", a);
printf("%s\n", str);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char s[100];
int ch[100];
int intnum,charnum;
int i,j,k=0;
scanf("%d",&intnum);
i=0;
charnum=intnum%10;
while(intnum!=0){
printf("%d",charnum);
ch[i]=charnum;i++;
intnum=(intnum-charnum)/10;
charnum=intnum%10;
}
i--;
printf("\ni=%d\n",i);
printf("%d",ch[i]);
for(j=i;j>=0;j--){
s[k]=ch[j]+'0';
k++;
}
s[k]='\0';
printf("\n");
puts(s);
return 0;
}
#include<stdlib.h>
#include<string.h>
int main()
{
char s[100];
int ch[100];
int intnum,charnum;
int i,j,k=0;
scanf("%d",&intnum);
i=0;
charnum=intnum%10;
while(intnum!=0){
printf("%d",charnum);
ch[i]=charnum;i++;
intnum=(intnum-charnum)/10;
charnum=intnum%10;
}
i--;
printf("\ni=%d\n",i);
printf("%d",ch[i]);
for(j=i;j>=0;j--){
s[k]=ch[j]+'0';
k++;
}
s[k]='\0';
printf("\n");
puts(s);
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |