pik*_*chu 1 c string null-character
我将带有空格的字符串作为输入,并用空字符'\ 0'替换空格.当我现在打印字符串时,我希望只有部分直到第一个NULL字符,这是第一个空格,但我得到的是原始字符串.
这是代码 -
#include<stdio.h>
int main(){
char a[1000];
int length, i = 0;
length = 0;
scanf("%[^\n]s", a);
while(a[i]!='\0')
i++;
length = i;
printf("Length:%d\n", length);
printf("Before:%s\n", a);
for(i=0;i<length;i++){
if(a[i] == " ")
a[i] = '\0';
}
printf("After:%s\n", a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这有什么问题?
你的代码错了.
for(i=0;i<length;i++){
if(a[i] == " ")
a[i] = '\0';
}
Run Code Online (Sandbox Code Playgroud)
比较是试图将字符与指针进行比较(用"" - >表示,这将成为指向字符串的指针.在这种情况下,字符串只有一个空格.)这可以通过以下替换来解决
for(i=0;i<length;i++){
if(a[i] == ' ')
a[i] = '\0';
}
Run Code Online (Sandbox Code Playgroud)
或者更好地以这种方式做到这一点,因为除了空格之外你还可以有像tab这样的其他空格.(也请包括ctype.h)
for(i=0;i<length;i++){
if(isspace(a[i]))
a[i] = '\0';
}
Run Code Online (Sandbox Code Playgroud)