数组索引不显示字符

The array index doesnt show the character

本文关键字:字符 显示 索引 数组      更新时间:2023-10-16

我有这个代码:

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

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

if 语句中将=更改为==

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

尝试

if (s[ i ] == ' ') 

s[ i ] = ' '始终为 true,因为赋值的结果是分配的值(空格)。这个值被隐式转换为bool0 = false,其他任何值 = true )。由于空格以 ASCII 格式32,因此它将始终true

参考资料 - 赋值运算符、比较运算符、ASCII 表

这样做:

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

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