【问题标题】:The array index doesnt show the character [closed]数组索引不显示字符[关闭]
【发布时间】:2017-01-31 20:11:31
【问题描述】:

我有这个代码:

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

编辑:我的问题只是一个拼写错误,如果您不明白这里出了什么问题,请查看接受的答案。

【问题讨论】:

  • 比较是==而不是=,打开编译器警告
  • @Slava 哦,谢谢,我正在使用在线编译器。我没看到

标签: c++ arrays string char


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    试试

    if (s[ i ] == ' ') 
    

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

    参考文献 - Assignment OperatorComparison OperatorsASCII Table

    【讨论】:

      【解决方案3】:

      这样做:

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

      = 是一个赋值运算符。要比较两个值,您需要使用 == 运算符。你已经使用了=,那个赋值运算符总是返回true,所以+一直被打印出来。

      【讨论】:

        猜你喜欢
        • 2014-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-11
        相关资源
        最近更新 更多