我有这段代码:
#include <stdio.h>
int main(){
char s1[30] = "This is a sentence";
for(int i = 0; i<sizeof(s1);i++){
if(s1[i] = ' '){
printf("+");
}
}
return 0;
}
当我尝试循环数组以找到所有空格时:
Output: ++++++++++++++++++++++++++++ //30 pluses.
为什么我的程序没有输出3个加号?
编辑:我的问题是一个简单的错误错误,如果你不明白这里有什么问题,请看看已接受的答案。
答案 0 :(得分:4)
在if语句中将=
更改为==
。
答案 1 :(得分:0)
在条件语句中,您将空间分配给s[ i ]
(operator =
)。您想比较它们(operator ==
)。
尝试
if (s[ i ] == ' ')
s[ i ] = ' '
始终为true,因为赋值的结果是赋值(空格)。此值隐式转换为bool
(0
= false
,其他任何内容= true
)。由于ASCII中的空格为32
,因此始终为true
。
答案 2 :(得分:0)
这样做:
if(s1[i] == ' '){
printf("+");
}
=
是一个赋值运算符。要比较两个值,您需要使用==
运算符。您已使用=
该赋值运算符始终返回true,因此+
始终打印出来。