我的老师告诉我们编写一个程序,在取出连续的空格后应该给出一个字符串的长度,并且只使用一个空格。例如,如果我写“你好(空间)(空间)(空间)世界”它应该返回“你好世界”,长度应该是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;
}
答案 0 :(得分: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;
}