如何检查我的char字符串空格?

时间:2017-02-09 01:58:14

标签: c string space

我想取一个字符串并输出没有空格。我编写了下面的代码,但我的if语句似乎没有检测到char字符串中的空格,或者我没有这样做。

我认为我的问题出在我的if语句中,但我不知道如何修复它。

int main (void)
{
  char s[50];

  printf("Enter string:");
  fgets(s,50,stdin);

  for( int i = 0; i < strlen(s); i++ ){
    if( &s[i] != " " ){
     printf("%c\n", s[i]);
    }
  }

  return 0;
}

输出:

Enter string:xales was here
x
a
l
e
s

w
a
s

h
e
r
e

2 个答案:

答案 0 :(得分:0)

需要注意的重要一点是双引号字符实际上是字符串,而不是字符类型。该值将存储器地址保存到程序存储器中的某个位置(不是堆栈上的值),该位置恰好是2个字节长(一个用于空间,一个用于\0)。所以#1:将"更改为',并且您在堆栈中只有一个字符,可以按值进行比较。

第二个是通过在那里使用&符号,你试图比较字符串中i索引的地址,而不是那里的值。只需删除&

即可

答案 1 :(得分:0)

是的,你是对的。你的if条件总是如此,因此,你将最终按原样打印整个字符串 你的条件:     if( &s[i] != ' ' ) print s [i];

这里“&amp;”代表地址。因此,在您的if块中,您要检查的是:

  ` if(addressof( s[i] != ' ') print s[i]; `

现在地址永远不会是空间,因此你的if块将永远为真。 但是,如果您想要检查没有空格的s,请检查值:       if( s[i] != ' ' ) print s [i];

另外,正如你在比较charecter时,你应该明白,“”用于字符串,对于字符,你应该使用单引号''。