未初始化的char变量

时间:2017-10-20 21:34:08

标签: c

在下面编译我的代码时,它表示f未初始化。如何初始化角色以及为什么需要?我的目的是在f输入并存储c时结束循环。

#include <stdio.h>
#include <string.h>
int main(void)
{
  int count= 0;
  char c,f;

  printf("Input a character:\n");
  do
  {
    c = getchar();
    count++
  }while(c!=f);
  printf("number of characters: %d", count);
  return 0;
}

3 个答案:

答案 0 :(得分:3)

f是变量的名称,而不是字符'f'!

您需要初始化char f = 'f';

答案 1 :(得分:2)

您需要初始化变量,因为否则c != f会将cf变量中恰好存在的不确定值进行比较。

如果您想测试他们是否输入了字母f,您应该与文字进行比较,而不是变量。

do {
    c = getchar();
    count++;
} while (c != 'f');

答案 2 :(得分:0)

  

如何初始化角色?

初始化变量时,不会初始化字符。

  

为什么我需要?

当声明局部变量时,此变量在堆栈上分配,它的值是堆栈中该位置的当前值(即垃圾)。

因此,您需要为该变量设置一个值,以避免程序的未定义行为。在您的特定情况下,此值为:'f'。单引号表示f是一个字符,这是您的变量(char)所期望的数据类型。