繁体   English   中英

代码无法读取字符字符串的最后一个字符(C语言)

[英]Code doesn't read the last character of string of Characters (C language)

#include "stdio.h"
int main() {
  char input[10];
  char standart;
  int i;
  int b = 0;

  scanf("%c", &standart);

  for(i = 0; i < 10; i++){
    scanf("%c ", &input[i]);
    if(input[i] == standart){
      b++;
    }
  }

  printf("%d", b);
  return 0;
}

// ( 2 % a b ( r ) ? ( (

该代码是后继代码,可读取列表中的第一个字符,然后查看有多少个上述字符(不包括其自身)。 但是代码不会读取最后一个字符,总之,当我输入示例输入时,代码只会看到2'(',而应该看到3。

对于给定的输入( 2 % ab ( r ) ? ( ( ,该程序采用第一个字符(作为变量standart输入-

scanf("%c", &standart);

之所以会出现此问题,是因为在for循环的第一次迭代中for scanf正在从给定的输入中读取第一个空格字符(空白) (并将其存储到input[0] for 。for循环运行10次迭代,而最后一个字符(未中插入input ,因为其中的阵列standart在字符计数input阵列即将一个小于预期,即2。

for循环scanf语句更改for -

scanf(" %c", &input[i]); //Removed the space after %c and added a space before %c.

这样,for循环scanf将吃掉空白字符。 所以,从输入下一个字符- 2将被存储到input[0]%将被存储到input[1]等和最后一个字符“(”将被存储到input[9]而且, b将在input数组中具有正确的standart字符计数,即3。

您必须像scanf(" %c",&c);
因为它从先前的输入中读取了“ \\ n”,所以空格将跳过“ \\ n”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM