小编Ral*_*lph的帖子

C++ 为什么我的代码在 Ubuntu 上给出了想要的结果,但在 Windows 7 上有未定义的行为

我正在大学学习 C++ 课程,每周我们都需要编写一个具有给定规范的程序。通常是围绕我们前一周在课堂上讨论的主题来解决的基本任务。当我们讨论指针数组和动态内存时,本周的课程自然是关于使用数组和动态内存分配。

分解一下,我们被要求编写的程序应该接受一个随机的用户输入(没有空格,只有一些随机字符),并将用户输入分为 3 类:大写、小写和特殊字符。

我使用的方法可能不是最有效的方法,但它可以完成工作,考虑到我们允许使用的唯一库是 iostream 和 cmath,但是我的问题来了。在课堂上,我几乎很快就编写了程序,编译了它,它立即运行,没有任何问题。如果您提供用户输入,例如 aAghC4,它将作为输出 AC agh 4

所以我继续从我家里的私人机器上的大学文件夹中下载我的程序来进行一些工作,使其在实践中更有效率。但是,当我在 Windows 机器上编译(未编辑和原始).cpp 时,它的输出是随机的、未定义的行为。无论是在课堂上还是在家里,我都使用 g++ 来编译我的文件,但是在家里我运行的是 Windows 7,在课堂上我们使用的是 Ubuntu 14.04。

如果有人能看看我的代码并告诉我为什么它在 Windows 机器上不起作用,我会非常高兴。

#include<iostream>

using namespace std;

int main(){

  char input[80];
  int counter = 0;

  cin >> input;
  for(int i = 0; input[i] != '\0'; i++){
  counter++;
  }

  char *uppercase = new char[counter];
  char *lowercase = new char[counter];
  char *special = new char[counter];

  for(int i = 0; i < (counter+1); i++){
  switch(input[i]){
    case 'a': lowercase[i] = …
Run Code Online (Sandbox Code Playgroud)

c++ undefined-behavior

1
推荐指数
1
解决办法
157
查看次数

标签 统计

c++ ×1

undefined-behavior ×1