阿帕茶次 2024-04-30 00:07 采纳率: 51.7%
浏览 10

在长度不固定时手动输入数组

img

img


这是为什么,最后输入'\0’不就会结束循环吗,怎会这样?
自己在调试的时候,发现只要输入'\0'后面str[i]里面的内容就会自主改变,不明白

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-04-30 08:33
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题描述: 为什么在输入字符串时,当输入 '\0' 后,后面的字符会自主改变? 解答: 在计算机中,'\0'(即空字符)在字符串代表字符串的结束符。当我们输入一个字符串时,计算机会将字符串存储到一段连续的内存空间中,每个字符占用一个字节。当字符串长度为n时,计算机会分配n+1个字节的内存空间,其中最后一个字节存放'\0',表示字符串的结束。 当我们使用循环控制输入字符串时,一般情况下是以遇到'\0'结束循环,但是如果我们手动输入'\0',就会使程序认为输入结束,从而导致输入的字符串不完整。 例如,假设我们要输入"hello",程序会分配6个字节的内存空间,将"hello\0"存储进去,其中'\0'是程序自动添加进去的。但是如果我们手动输入"hel\0lo",程序会认为输入结束,从而将"hel"作为字符串存储起来,后面"L\0lo"则被当作其他字符处理并存储。 以下是一个示例代码:
    #include <iostream>
    using namespace std;
    int main() {
        char str[100];
        int i = 0;
        while (true) {
            cin >> str[i];
            if (str[i] == '\0') break;
            i++;
        }
        cout << str << endl;
        return 0;
    }
    

    在上述代码中,循环控制输入字符串,直到遇到'\0'结束。最后输出输入的完整字符串。但是如果我们手动输入'\0',程序将会提前结束循环,后续字符将无法输入。 因此,在输入字符串时,我们应该避免手动输入'\0'。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月30日

悬赏问题

  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题
  • ¥15 MS中不知道高分子的构型怎么构建模型
  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。