我的老师告诉我们写一个程序,在取出连续的空格后给出字符串的长度,并且只使用一个空格。例如,如果我写“hello(space)(space)(space)world”,它应该返回“hello world”,长度应该是11。问题是我不断遇到段错误,但我不知道为什么?有人可以向我解释一下吗?顺便谢谢!
int limpaEspacos (char t[]){
int i, j, w=0;
char c;
for(i=0;t[i];i++){
t[w]=t[i];
w++;
for(j=i;t[j];j++,i++){
if (t[j]!=' ') {break;}
}
}
t[w]='\0';
return w;
}
int main () {
int a;
a= limpaEspacos ("b ruh");
printf("%d\n", a );
return 0;
}
最佳答案
"b ruh"
是一个常量字符串文字,您无法修改它。这就是您遇到段错误的原因。
下面是更正后的颂歌,现在可以使用了:
#include <stdio.h>
#include <stdlib.h>
int
limpaEspacos (char t[])
{
int i, j, w = 0;
char c;
for (i = 0; t[i]; i++)
{
t[w] = t[i];
w++;
for (j = i; t[j]; j++, i++)
{
if (t[j] != ' ')
{
break;
}
}
}
t[w] = '\0';
return w;
}
int
main ()
{
int a;
char str[100] = "b ruh"; // code change
a = limpaEspacos (str);
printf ("%d\n", a);
return 0;
}
关于c - 段错误,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49693196/