|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
void fun(char *a,int n)
{
int i;
if((i=n/10)!=0)
{
fun(a+1,i);
}
*a=n%10+'0';
printf("%c\n",*a);
}
void main()
{
char str[30];
int n;
scanf("%d",&n);
fun(str,n);
puts(str);
}
解决C/C++乱码问题
在您提供的代码中,存在乱码问题的原因是因为字符数组 str 在传递给 puts 函数时,没有以空字符 \0 结尾,导致输出时无法正确终止字符串。除此之外,还有一些小问题需要修正。下面是修改后的代码:
- #include <stdio.h>
- void fun(char *a, int n)
- {
- int i;
- if ((i = n / 10) != 0)
- {
- fun(a + 1, i);
- }
- *a = n % 10 + '0';
- *(a + 1) = '\0'; // 添加空字符终止字符串
- printf("%c\n", *a);
- }
- int main()
- {
- char str[30] = {0}; // 初始化数组为全0,避免未初始化内容引发的问题
- int n;
- scanf("%d", &n);
- fun(str, n);
- puts(str);
- return 0;
- }
复制代码
这里进行了如下修改:
1. 在 fun 函数中,添加了 *(a + 1) = '\0'; 语句,用于在给字符串末尾添加空字符 \0,以正确终止字符串。
2. 在 main 函数中,初始化了字符数组 str 的所有元素为0,通过 {0} 初始化列表实现。
这样修改后, puts 函数能够正确输出字符串,避免乱码问题。
希望这个修改后的代码能够解决乱码问题。如果还有其他问题,请随时提问。
如果回答对你有帮助,请给我一个最佳答案! 
|
|