c - 为什么我的代码导致分段错误?
问题描述
我尝试在 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);
}
我想知道我的程序有什么问题
解决方案
string[i+2]
当 i 等于 时,您无法访问strlen(string) - 1
。您可以访问 string[i+1] 这将是终止 nul 字符。
更改 for 循环的上限。
推荐阅读
- mongodb - 我对 morphia 2.1x 的 morphiaSessionFactory 有问题
- python - Pyqt5调整图像查看器大小并在其旁边添加文本框
- wordpress - 需要一些帮助将 wordpress 注册表连接到 infusionsoft
- bash - Tshark - 某些字段无效
- java - 矢量资产显示为白色,即使它是红色的
- javascript - 无法读取 javascript 中未定义的属性“clearRect”
- vue.js - 无法添加 vue-cli-plugin-cordova
- ruby-on-rails - Rails 嵌套查询有很多通过关联
- python - 在运行时更改 pytest 的实时日志级别
- python - Pyspark 命令无法识别(Windows)