数组索引不显示字符

时间:2017-01-31 20:11:31

标签: c++ arrays string char

我有这段代码:

#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个加号?

编辑:我的问题是一个简单的错误错误,如果你不明白这里有什么问题,请看看已接受的答案。

3 个答案:

答案 0 :(得分:4)

在if语句中将=更改为==

答案 1 :(得分:0)

在条件语句中,您空间分配给s[ i ]operator =)。您想比较它们(operator ==)。

尝试

if (s[ i ] == ' ') 

s[ i ] = ' '始终为true,因为赋值的结果是赋值(空格)。此值隐式转换为bool0 = false,其他任何内容= true)。由于ASCII中的空格为32,因此始终为true

参考文献 - Assignment OperatorComparison OperatorsASCII Table

答案 2 :(得分:0)

这样做:

if(s1[i] == ' '){
   printf("+");
}

=是一个赋值运算符。要比较两个值,您需要使用==运算符。您已使用=该赋值运算符始终返回true,因此+始终打印出来。