如何检查我的字符字符串是否有空格?
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
需要注意的是,一个double-quoted字符实际上是一个字符串,而不是char类型。这个值保存了一个内存地址,指向程序内存中的一个位置(不是堆栈上的值),恰好是 2 个字节长(一个用于 space,一个用于 [=10=]
)。所以这就是第一件事:将 "
更改为 '
并且您将在堆栈上有一个字符,可以按值进行比较。
第二点是,通过在此处使用 &
符号,您试图与字符串中第 i
个索引的地址进行比较,而不是与此处的值进行比较。只需删除 &
.
是的,你是对的。您的 if 条件始终为真,因此,您最终将按原样打印整个字符串。
你的 if 条件:
if( &s[i] != ' ' ) print s [i];
这里的“&”代表地址。所以在你的 if 块中你正在检查的是:
` if(addressof( s[i] != ' ') print s[i]; `
现在地址永远不会 space,因此您的 if 块将始终为真。
但是当你想在没有 spaces 检查值的情况下检查要打印的 s 时:
if( s[i] != ' ' ) print s [i];
此外,当您比较字符时,您应该明白," " 用于字符串,对于字符,您应该使用单引号 ' '。
我想获取一个字符串并在没有空格的情况下输出它。我写了下面的代码,但我的 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
需要注意的是,一个double-quoted字符实际上是一个字符串,而不是char类型。这个值保存了一个内存地址,指向程序内存中的一个位置(不是堆栈上的值),恰好是 2 个字节长(一个用于 space,一个用于 [=10=]
)。所以这就是第一件事:将 "
更改为 '
并且您将在堆栈上有一个字符,可以按值进行比较。
第二点是,通过在此处使用 &
符号,您试图与字符串中第 i
个索引的地址进行比较,而不是与此处的值进行比较。只需删除 &
.
是的,你是对的。您的 if 条件始终为真,因此,您最终将按原样打印整个字符串。
你的 if 条件:
if( &s[i] != ' ' ) print s [i];
这里的“&”代表地址。所以在你的 if 块中你正在检查的是:
` if(addressof( s[i] != ' ') print s[i]; `
现在地址永远不会 space,因此您的 if 块将始终为真。
但是当你想在没有 spaces 检查值的情况下检查要打印的 s 时:
if( s[i] != ' ' ) print s [i];
此外,当您比较字符时,您应该明白," " 用于字符串,对于字符,您应该使用单引号 ' '。