把
printf(“%ld-->%ld",n,result);
换成
printf(“-->%ld",result);
问题的主要原因是在转换整数为字符串时,没有考虑到字符串结尾的'\0'字符。因此,当将整数转换为字符串时,需要在字符串的结尾添加'\0'字符,否则会出现错误的输出结果。以下是一个解决该问题的例子:
#include <iostream>
#include <cstring>
using namespace std;
void reverse(char* str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
swap(str[i], str[len - i - 1]);
}
}
int main() {
int num = 12345;
char str[10];
int i = 0;
while (num > 0) {
str[i++] = num % 10 + '0';
num /= 10;
}
str[i] = '\0'; // 添加结尾的'\0'字符
reverse(str);
cout << str << endl;
return 0;
}
输出结果为:54321。