2012-10-13 72 views
1

我将其中包含空格的字符串作为输入,并用NULL字符'\ 0'替换空格。当我现在打印字符串时,我只希望直到第一个空字符的部分,这是第一个空格,但是我得到的是原始字符串。打印一个空字符的字符串

这里是代码 -

#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; 
} 

什么这是错的?

+8

'A [1] ==““'是不一样的'A [1] =='“'。 – DCoder

+3

请注意编译调试信息和启用所有警告的习惯。如果你在linux上用'gcc -Wall -g'进行编译,你会得到一个警告,以帮助你发现你的错误。 –

+0

@直播你应该发布这个答案。 –

回答

6

您的代码是错误的。

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

的比较试图将一个字符与指针比较(用“”表示 - >这成为一个指向字符的字符串在这种情况下,字符串是仅具有一个空间。) 这可以通过以下替换固定

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

还是好做这种方式,因为你可以有其他的空格太像标签,除了空间。 (请包括文件ctype.h也)

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

替换" "printf通过' '。当我尝试时它按预期工作。

+0

Downvoter,请解释! – Raj

+3

'''''不应该在'printf'中被替换,而是在'if'测试中。 –

+3

我没有降低你的评价,但是当你的回答是正确的(改变C字符串指针到空格字符)时,它与'printf'函数无关。我的猜测是,这就是让你失望的原因。 –