2017-10-20 110 views
-5

当编译下面的代码时,它说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; 
} 
+6

如果你没有初始化它,你会期待'c!= f'与什么比较? – Barmar

+0

'f ='E''将解决问题,您必须设置变量'f'的值。 –

+0

您的问题从未被[接受](https://stackoverflow.com/help/accepted-answer)之前。 – BLUEPIXY

回答

2

需要初始化变量,否则c != f与任何不确定的值恰好是在f变量与c

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

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

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

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

+0

干杯,它的工作! – oxodo

0

如何初始化一个角色?

您不初始化一个字符,您初始化一个变量。

为什么我需要?

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

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