求教这个里面为什么会出现乱码
#include<stdio.h>#include<stdlib.h>
#include<string.h>
char *convert(int n,char *s)
{
char c;
c=n%10+'0';
strcat(s,c);
n/=10;
if(n!=0)
convert(n,s);
else
return s;
}
int main()
{
int n;
char s,*str;
scanf("%d",&n);
str=convert(n,s);
intf("%s\n",str);
}
你先说你这个程序要干啥 Mr.屎壳螂 发表于 2015-4-22 18:11
你先说你这个程序要干啥
将整数n转化成字符串 JayChen 发表于 2015-4-22 20:32
将整数n转化成字符串
字符串没有以 '\0'结尾 仰望天上的光 发表于 2015-4-22 20:53
字符串没有以 '\0'结尾
大赞!,谢谢,我以为字符串结束会自动加上\0 还是推荐一个库函数吧,比我这个好多了,sprintf(char *s,"%d",n);这样会把n转化成字符串存储在s数组中,我的还没有将转化后的字符串倒过来 学习了。 能不能把你弄好的源代码弄来,加了‘\0’还是乱码 淡定,淡定,淡定…… Miracle-s 发表于 2015-4-23 23:16
能不能把你弄好的源代码弄来,加了‘\0’还是乱码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//这个turnover函数是为了将字符串调转过来,因为convert函数中将n转换成字符串后字符串是倒着的
//就是利用了一个中间变量将字符串数组s首尾依次交换
char *turnover(char *s)
{
int i,j; // 临时变量
char c; // 临时变量
j=strlen(s)-1; // 获取字符串有字符的长度因为字符串后又'\0',所以减1
for(i=0;i<=j/2;i++)// 循环一次交换
{
c=s;
s=s;
s=c;
}
return s;
}
// 将整数n转换成字符串
char *convert(int n,char *s)
{
char c[]={'0','\0'}; // 临时变量,用于存储从n上一次剥落的字符
c=n%10+'0'; // 将n的个位转化成字符,存储在c中
strcat(s,c); // 连接s与c
n/=10; // n被剥落一位就减去一位
if(n!=0) // 递归开始。。。
convert(n,s);
else
return turnover(s);
}
int main()
{
int n;
char s,*str;
scanf("%d",&n);
str=convert(n,s);
printf("%s\n",str);
} 本帖最后由 JayChen 于 2015-4-24 13:21 编辑
#include<stdio.h>
#include<string.h>
int main()
{
char buffer;
int n,i;
scanf("%d",&n);
i=sprintf(buffer,"%d",n);
printf("%s\n",buffer);
printf("%d",i);
}
:lol::lol::lol:
页:
[1]