首页 > 解决方案 > 为什么我的代码导致分段错误?

问题描述

我尝试在 Visual stdio 中运行该程序并使用WUBWEWUBAREWUBWUBTHEWUBCHAMPIONSWUBMYWUBFRIENDWUB 作为输入。运行后显示Segmentation fault (core dumped).

如何解决这个问题?

#include <stdio.h>
#include <string.h>
int main()
{
    char string[201];
    int i, j;
    scanf("%s",string);

    for(i=0;i<strlen(string); i++){
        if(string[i]=='W' && string[i+1]=='U' && string[i+2]=='B'){
            for(int k=i; k<i+3; k++){
                string[k]='o';
                i=i+2;
            }
        }
    }
    puts (string);

}

我想知道我的程序有什么问题

标签: cvisual-studiocompiler-errorside

解决方案


string[i+2]当 i 等于 时,您无法访问strlen(string) - 1。您可以访问 string[i+1] 这将是终止 nul 字符。

更改 for 循环的上限。


推荐阅读