打印包含空字符的字符串

时间:2012-10-13 07:22:44

标签: 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;
}

这有什么问题?

2 个答案:

答案 0 :(得分:6)

你的代码错了。

for(i=0;i<length;i++){
        if(a[i] == " ")
                a[i] = '\0';
}   

比较是尝试将字符与指针进行比较(用“”表示 - &gt;这将成为指向字符串的指针。在这种情况下,字符串只有空格。) 这可以通过以下替换来解决

for(i=0;i<length;i++){
        if(a[i] == ' ')
                a[i] = '\0';
}   

或者更好地以这种方式做到这一点,因为除了空格之外,你可以像tab一样拥有其他空格。 (请同时包括ctype.h)

for(i=0;i<length;i++){
           if(isspace(a[i]))
                a[i] = '\0';
}

答案 1 :(得分:-1)

" "中的printf替换为' '。当我尝试时,它按预期工作。