-3

私は新しい初心者で、基本的な問題に直面しています。getchar を使用して while ループを中断することはできません。キャラクター :-(

#include<stdio.h>

typedef struct employee
{
    char name[20];
    int age;
    char country[20];
}emp;

void getinfo(char *str, const char *param)
{
    int i;
    char ch;
    if (strcmp(param,"NAME" ) == 0)
    {
        printf("\nPlease enter NAME \n");
    }
    else if(strcmp(param, "COUNTRY") ==0)
    {
        printf("\nPlease enter COUNTRY \n");
    }
    while((ch==getchar())!= '\n')
    {
        str[i] = ch;
        i++;
    }
    str[i]= '\0';
}

int getage(int *age)
{
    printf("\n Please enter Age \n");
    scanf("%d",age);
}

int main(void)
{
    emp e1;
    getinfo(e1.name, "NAME");
    getinfo(e1.country, "COUNTRY");
    getage(&e1.age);
}

助けてください。

4

3 に答える 3

4

while((ch==getchar())!= '\n')

読むべき

while((ch=getchar())!= '\n')
         ^

それ以外の場合は、toの結果を代入する代わりに、toの (初期化されていない) 値を比較しています。chgetchar()getchar()ch

于 2013-01-26T10:32:52.580 に答える
2
while((ch==getchar())!= '\n')

chその行はまだ何も割り当てられていないため、現在未定義の操作です。ゼロ以外のものはすべて真であり、「\ n」はゼロより大きいため、ch==getchar()偽、真であると仮定しましょう。false != '\n'

を単一に変更==したいとします。ch==getchar()=

于 2013-01-26T10:33:49.490 に答える
0

あなたwhile((ch==getchar())!='\n')
はタイプgetchar()し たch_ _ _'\n'
truech
while((ch=getchar())!='\n')

于 2013-01-26T10:45:50.783 に答える