鱼C论坛

 找回密码
 立即注册
查看: 1635|回复: 11

求教这个里面为什么会出现乱码

[复制链接]
发表于 2015-4-22 12:32:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char *convert(int n,char *s)
{
        char c[2];
        c[0]=n%10+'0';
        strcat(s,c);
        n/=10;
        if(n!=0)
                convert(n,s);
        else
                return s;

}
int main()
{
        int n;
        char s[100],*str;
        scanf("%d",&n);
        str=convert(n,s);
intf("%s\n",str);
}
捕a获.PNG 捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-22 18:11:05 | 显示全部楼层
你先说你这个程序要干啥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 20:32:31 | 显示全部楼层
Mr.屎壳螂 发表于 2015-4-22 18:11
你先说你这个程序要干啥

将整数n转化成字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-22 20:53:27 | 显示全部楼层
JayChen 发表于 2015-4-22 20:32
将整数n转化成字符串

字符串没有以 '\0'结尾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 23:08:11 | 显示全部楼层
仰望天上的光 发表于 2015-4-22 20:53
字符串没有以 '\0'结尾

大赞!,谢谢,我以为字符串结束会自动加上\0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 23:10:03 | 显示全部楼层
还是推荐一个库函数吧,比我这个好多了,sprintf(char *s,"%d",n);这样会把n转化成字符串存储在s数组中,我的还没有将转化后的字符串倒过来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-23 19:43:03 | 显示全部楼层
学习了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-23 23:16:17 | 显示全部楼层
能不能把你弄好的源代码弄来,加了‘\0’还是乱码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-23 23:46:26 From FishC Mobile | 显示全部楼层
淡定,淡定,淡定……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-24 13:19:18 | 显示全部楼层
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[j];

  s[j--]=s[i];

  s[i]=c;

 }

 return s;

}

// 将整数n转换成字符串

char *convert(int n,char *s)

{

 char c[]={'0','\0'}; // 临时变量,用于存储从n上一次剥落的字符

 c[0]=n%10+'0';   // 将n的个位转化成字符,存储在c[0]中

 strcat(s,c);   // 连接s与c

 n/=10;     // n被剥落一位就减去一位

 if(n!=0)    // 递归开始。。。

  convert(n,s);

 else

  return turnover(s);

}

int main()

{

 int n;

 char s[100],*str;

 scanf("%d",&n);

 str=convert(n,s);

 printf("%s\n",str);

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-24 13:20:02 | 显示全部楼层
本帖最后由 JayChen 于 2015-4-24 13:21 编辑


#include<stdio.h>

#include<string.h>

int main()

{

 char buffer[80];

 int n,i;

 scanf("%d",&n);

 i=sprintf(buffer,"%d",n);

 printf("%s\n",buffer);

 printf("%d",i);

}



评分

参与人数 1鱼币 +5 收起 理由
康小泡 + 5 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-25 16:25:47 | 显示全部楼层
:lol::lol::lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 21:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表