【发布时间】:2020-03-21 00:47:24
【问题描述】:
我正在尝试修复我的程序...但我不知道如何修复此错误“总线错误:10”。
转换为小写函数:
void toLowerCase(char* s){
while(*s){
if(*s >= 'A' && *s <= 'Z'){
*s = tolower(*s);
++s;
}
}
}
【问题讨论】:
-
你的
while循环一旦遇到不是大写字母的字符就会卡住并永远运行!将++s移动到if块之外。 -
如果你使用
for循环而不是while,你就不太可能犯这种错误。 -
请注意,
tolower在转换之前还会检查它是否传递了一个大写字符,并且不知道您已经进行了该检查。所以你在浪费处理器时间。 -
@4386427 你应该使用提供的功能:它是安全且便携的。
-
@PaulOgilvie
for(; *s; ++s) { }- 我无法理解为什么人们总是在使用迭代器做得更好的时候检查索引...
标签: c arrays pointers character char-pointer