小新冲冲冲 2022-12-30 12:19 采纳率: 96.7%
浏览 16
已结题

关于字符数组的打印问题

这个代码读取之后都是正确的(已经验证),但是一到后面打印就是乱码,中间也没有回改变数组的值的表达式,这是怎么回事呢?

        for (m = 0; m < 18; m++) {
            A[m] = getchar();
            if (m <= 16) {
                sum += A[m] * B[m];
                if (A[m] >='0'&&A[m]<='9') {
                    c++;
                }
            }
        }
        z = sum % 11;
        if (z % 10 == 2 && c == 17){}
        else {
            for (m = 0; m < 18; m++) {
                printf("%d", A[m]);
            }
            shu = 1;
        }
        printf("\n");
        getchar();
  • 写回答

2条回答 默认 最新

  • |__WhoAmI__| 2022-12-30 12:30
    关注

    根据代码,我觉得可能是使用了不同编码格式来读入和输出字符串,导致输出乱码的情况。

    在C语言中,字符串是以字符数组的形式存储的,字符数组中的每一个元素都是一个字符。在读入字符时,使用函数getchar()可以读入一个字符,并将其存储在字符数组中。

    在输出字符串时,使用函数printf()可以输出一个字符串。在输出字符串时,需要注意的是,字符串的结尾是以'\0'结尾的,所以在输出字符串时,要在字符数组的最后一个元素后面加上'\0'。

    如果在读入字符串时使用的是一种编码格式,而在输出字符串时使用的是另一种编码格式,那么可能会导致输出乱码的情况。

    为了解决这个问题,可以试试使用相同的编码格式来读入和输出字符串。还可以使用相关的转换函数来将字符串转换为所需的编码格式,以便在输出时能够正确地显示字符串。

    例如可以使用函数iconv()将字符串从一种编码格式转换为另一种编码格式,或者使用函数mbstowcs()和wcstombs()将字符串从多字节编码转换为宽字符编码,或者从宽字符编码转换为多字节编码。
    望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 修改了问题 12月30日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题
  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?