我无法在C中执行某些输入

我无法在C中执行某些输入,c,input,C,Input,我对计算机程序很陌生,C是我的第一种编程语言。我从书中学习代码,现在我正在上输入课。我尝试用C语言编写这段代码: #include <stdio.h> int main() { char name[99], web_address[99], address[99]; int age; printf("Insert your name: "); fgets(name, sizeof(name), stdin); pri

我对计算机程序很陌生,C是我的第一种编程语言。我从书中学习代码,现在我正在上输入课。我尝试用C语言编写这段代码:

#include <stdio.h>

int main()
{
    
char name[99], web_address[99], address[99];
    int age;

    printf("Insert your name: ");
    fgets(name, sizeof(name), stdin);

    printf("Your web address: ");
    fgets(web_address, sizeof(web_address), stdin);

    printf("Insert your age: ");
    scanf("%i", &age);

    printf("Insert your address for more information: ");
    fgets(address, sizeof(address), stdin);


    printf("\n-----------------------------------------------------------\n");
    printf("my name is %s", name);
    printf("My web address are %s", web_address);
    printf("my age is  %i\n", age);
    printf("and my home address are %s", address);

    return 0;
}
#包括
int main()
{
字符名[99],网址[99],地址[99];
智力年龄;
printf(“插入您的姓名:”);
fgets(名称、尺寸(名称)、标准尺寸);
printf(“您的网址:”);
fgets(网址、sizeof(网址)、标准输入法;
printf(“插入您的年龄:”);
scanf(“%i”和年龄);
printf(“插入您的地址以获取更多信息:”);
fgets(地址,sizeof(地址),标准输入法);
printf(“\n------------------------------------------------------------\n”);
printf(“我的名字是%s”,名字);
printf(“我的网址是%s”,网址);
printf(“我的年龄是%i\n”,年龄);
printf(“我的家庭地址是%s”,地址);
返回0;
}

生成日志中没有错误或警告,但当我尝试运行此代码时,无法在其中输入地址。

尝试清理缓冲区,执行以下操作:

#include <stdio.h>

int main()
{
    
char name[99], web_address[99], address[99];
    int age;
    char ch; //CREATE NEW VARIABLE

    printf("Insert your name: ");
    fgets(name, sizeof(name), stdin);

    printf("Your web address: ");
    fgets(web_address, sizeof(web_address), stdin);

    printf("Insert your age: ");
    scanf("%i", &age);
    while ((getchar()) != '\n');
    ch = getchar(); //CLEAN THE BUFFER

    printf("Insert your address for more information: ");
    fgets(address, sizeof(address), stdin);


    printf("\n-----------------------------------------------------------\n");
    printf("my name is %s", name);
    printf("My web address are %s", web_address);
    printf("my age is  %i\n", age);
    printf("and my home address are %s", address);

    return 0;
}
#包括
int main()
{
字符名[99],网址[99],地址[99];
智力年龄;
char ch;//创建新变量
printf(“插入您的姓名:”);
fgets(名称、尺寸(名称)、标准尺寸);
printf(“您的网址:”);
fgets(网址、sizeof(网址)、标准输入法;
printf(“插入您的年龄:”);
scanf(“%i”和年龄);
而((getchar())!='\n');
ch=getchar();//清除缓冲区
printf(“插入您的地址以获取更多信息:”);
fgets(地址,sizeof(地址),标准输入法);
printf(“\n------------------------------------------------------------\n”);
printf(“我的名字是%s”,名字);
printf(“我的网址是%s”,网址);
printf(“我的年龄是%i\n”,年龄);
printf(“我的家庭地址是%s”,地址);
返回0;
}

我所做的是创建一个
ageChar[10]
数组来存储年龄。然后使用
sscanf
将其转换为整数,并将其存储在
age
变量中(由用户3386109建议)

#包括
int main(){
字符名称[99],网址[99],地址[99],ageChar[10];
智力年龄;
printf(“插入您的姓名:”);
fgets(名称、尺寸(名称)、标准尺寸);
printf(“您的网址:”);
fgets(网址、sizeof(网址)、标准输入法;
printf(“插入您的年龄:”);
fgets(ageChar、sizeof(age)、stdin);
sscanf(ageChar、%d、&age);
printf(“插入您的地址以获取更多信息:”);
fgets(地址,sizeof(地址),标准输入法);
printf(“\n------------------------------------------------------------\n”);
printf(“我的名字是%s”,名字);
printf(“我的网址是%s”,网址);
printf(“我的年龄是%d\n”,年龄);
printf(“我的家庭地址是%s\n”,地址);
返回0;
}

由于
scanf
处理空白的方式,混合
fgets
scanf
的效果不太好。尝试使用
fgets
age
作为字符串读取,然后使用
sscanf
@dfdhfshdkjfh将
age
转换为一个数字。是否将
'\n'
保留在
名称
中?
stdin
上的
fflush
行为未定义。
ch=getchar
读取并且不使用表示
地址的第一个字符。我尝试了这两种方法,使用和不使用while循环,两种方法都有效