首页 > 解决方案 > 为什么这段代码会给我运行时错误?C

问题描述

我不明白为什么它总是给出运行时错误:/那里有什么问题?我该如何解决这个问题?这是我的代码:

#include <stdio.h>

int main() 
{
    int i=0, ch;
    char word[100];
    for(;(ch = getc(stdin)) != EOF;)
    {
        do{
            word[i] = ch;
            if(ch == 32) word[i] = '\0';
            i++;
        } while(ch != 32);

    }
    printf("%s", word);
    return 0;
}

标签: c

解决方案


    do{
        word[i] = ch;
        if(ch == 32) word[i] = '\0';
        i++;
    } while(ch != 32);

您在第一次按键时溢出了缓冲区。除了这段损坏的代码之外,这应该指出没有范围检查的固定大小缓冲区的更广泛问题。


推荐阅读