c - 在 C 中使用数组 [100] 时出现运行时错误

标签 c arrays char initialization switch-statement

我是 C 语言的初学者。我试图在 Code::Blocks 和 Ideone 中运行这段代码,但两者都给了我相同的运行时错误。我尝试将 arr[100] 更改为 arr[101] 并且令人惊讶的是,代码运行了。我也担心poo[t] 的初始化,因为它似乎没有在其中存储sum 的值。或者 sum 可能保留值 0(可能是 switch 语句不允许 char 情况? )

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int arr[100], t, poo[t], i, j, sum; // refer HOLES

   scanf("%d", &t);

   for (i=0; i<t; i++) {
        scanf("%s", arr);
        j=0;
        sum = 0;
        while (arr[j] != '\0') {
            switch (arr[j])
            {
            case 'B':
                sum = sum + 2;
                break;
            case 'A':
            case 'D':
            case 'O':
            case 'P':
            case 'Q':
            case 'R':
                sum++;
                break;
            default:
                break;
            }
            j++;
        }
        poo[i] = sum;
        printf("%d", poo[i]);
   }

   for (i=0; i<t; i++)
   {
        printf("%d \n", poo[i]);
   }

    return 0;
}

最佳答案

int arr[100];
scanf("%s", arr);

如果 arr 是一个字符串,它应该声明为 char 数组:

char arr[100];
scanf("%s", arr);

“我也担心 poo[t] 的初始化”

你应该是。以下声明:

int t, poo[t];
scanf("%d", &t);

使用单元化变量 t 调用未定义的行为

t 正确初始化后声明 poo:

int t = 0;
scanf("%d", &t);
int poo[t];

关于c - 在 C 中使用数组 [100] 时出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19167980/

相关文章:

c - 有效计算闰日

c - C中参数的默认数据类型?

c - 将地址分配给 C 中的结构数组

c - 在 C 中将字符写入管道

c++ - Ifstream读取无用数据

c - 从c中的函数返回字符串

c - 使用rand()在C语言中生成不相关数

Java 对并行数组进行排序,需要帮助(NullPointerException 错误)

JavaScript 使用数组键/值对附加到对象

c - 从函数返回 char[]/string