繁体   English   中英

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

[英]How to check my char string for spaces?

我想取一个字符串并输出它没有空格。 我编写了下面的代码,但我的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 )。 所以这就是#1:改变" to ' ,你将在堆栈中有一个char来按值进行比较。

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

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

这里“&”代表地址。 所以在你的if块你正在检查的是:

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

现在地址永远不是空格,因此你的if块永远都是真的。 但是,当你想要检查没有空格的s打印时,检查值: if( s[i] != ' ' ) print s [i];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM