gpt4 book ai didi

c - 在其他输入之后使用 fgets()

转载 作者:行者123 更新时间:2023-11-30 17:34:04 25 4
gpt4 key购买 nike

我对 C 编程有点陌生,在做练习时遇到了麻烦。这是我的代码:

    printf("Enter the First Name: ");
scanf("%s", rd[input-1].firstName);

printf("Enter the Last Name: ");
scanf("%s", rd[input-1].lastName);

printf("Enter the Phone Number: ");
scanf("%d", &rd[input-1].phoneNum);

printf("Enter the Address: ");

fgets(rd[input-1].address, 100, stdin);

dataWrite();
printRecord(input-1);

其中rd[n]是一个结构体数组,为地址字段分配的char[]空间为100。我知道 fgets() 消耗“Enter”(\n) 字符。这就是为什么当我输入phoneNum时,fgets()受到影响,并且我无法获取地址字段的输入。还有其他方法可以获得长地址吗?

问题已解决:我输入了

     fgets(rd[input-1].address, 100, stdin);

两次。现在它工作得很好。

最佳答案

#include <stdio.h>

struct data
{
char firstName[100];
char lastName[100];
char phoneNum[10];
char address[100];
};

struct data rd[10];

void printRecord(int i)
{
printf("\n");//ugh
printf("fn: %s\n",rd[i].firstName);
printf("ln: %s\n",rd[i].lastName);
printf("pn: %s\n",rd[i].phoneNum);
printf("addr: %s\n",rd[i].address);
}

int main(int argc, char** argv)
{
int input=1;
char buff[100];

printf("Enter the First Name: ");
//char * fgets ( char * str, int num, FILE * stream );
fgets(buff, 100, stdin);
sscanf(buff, "%s", rd[input-1].firstName);
//Why "input-1"? keep it as just "input" and make sure it equals the correct value before entering this area

printf("Enter the Last Name: ");
fgets(buff, 100, stdin);
sscanf(buff,"%s", rd[input-1].lastName);

printf("Enter the Phone Number: ");
fgets(buff, 100, stdin);
//phoneNum is a string, not an integer, get it with a %s
sscanf(buff,"%s", &rd[input-1].phoneNum);

printf("Enter the Address: ");
fgets(rd[input-1].address, 100, stdin);

printRecord(input-1);

}

关于c - 在其他输入之后使用 fgets(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com