首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一段C程序不知道有关问题在哪里?输出结果不对

2013-09-04 
一段C程序不知道问题在哪里?输出结果不对#include stdio.h#include string.h//将字符串反转 void conv

一段C程序不知道问题在哪里?输出结果不对
#include "stdio.h"
#include "string.h"

//将字符串反转 
void convertString(char str[]){
int length = strlen(str);
char ch;

for(int i=0;i<length/2;i++){
ch=str[i];
str[i]=str[length-i-1];
str[length-i-1]=ch; 
}
}

//将数字转化为字符串 
char * intToString(int n){
char s[11];
int count=0;

while(n>0){
int t=n%10;
s[count++]='0'+t;
n=n/10;

s[count]='\0';

convertString(s);

return s;


main(){
int num;

scanf("%d",&num);

char * str=intToString(num);

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

}

输入:12345
输出:忐"

我预期的输出结果应该是:54321,不知道为何结果不对,求指教~ C
[解决办法]
问题出在intToString函数上。
该函数声明的char s[11]是自动变量,运行时储存在堆栈上。函数返回之后,该变量就销毁了,所以str实际上指向了一段非法的内存。

有几种方法解决该问题:
1. 给该函数添加一个字符数组参数,使用外部传入的内存完成s的功能。
2. 把s声明为全局变量或静态变量。
3. 使用malloc来替s分配空间。

热点排行