关于#输出#的问题,如何解决?

img

img


怎么解决这个输出结果多了个0,想要的结果是12345-->54321,确显示的是123450-->54321,求问怎么解决这个问题,谢谢帮助

printf(“%ld-->%ld",n,result);

换成

printf(“-->%ld",result);

以下内容部分参考ChatGPT模型:


问题的主要原因是在转换整数为字符串时,没有考虑到字符串结尾的'\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。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快