当前位置:  开发笔记 > 编程语言 > 正文

如何在结构中正确使用fgets?

如何解决《如何在结构中正确使用fgets?》经验,为你挑选了1个好方法。

我无法弄清楚我的代码有什么问题.这是我的代码:

#include 
#include     

#define N 20

typedef struct _dog {
    char dogName[N],ownerName[N];
    int dogAge;
} Dog;

int main() {
    //Dynamic array
    int size;
    printf("Number of dogs: ");
    scanf("%d", &size);
    Dog *dog = (Dog*)malloc(sizeof(Dog)*size);
    printf("\n");
    //Input
    int i;
    printf("Please provide the data: [dogName][ownerName][dogAge] :\n");
    for(i=0;i

任务很简单,你必须建立一个数据库但狗和所有者可以有两个或更多的名字,所以这就是为什么我尝试使用fget.但输出看起来很糟糕:(第一个狗名部分通常是空白的)

You provided the following data:
Dog Name: 

Owner Name: Doggy 1

Dog Age: 0
Dog Name: Big Dick

Owner Name: 2

Dog Age: 0

我读过这篇文章却没有帮助我.

我使用的输入:

Doggy 1
Big Dick
2
Doggy 2

它在Doggy 2之后结束.



1> Sourav Ghosh..:

你是从你的上一个留下一个新行,scanf()这是一个有效的输入fgets().更改

scanf("%d", &size);

scanf("%d%*c", &size);

消费和丢弃由于记者尾随换行符ENTER进入狗的数量后关键.

dogAge在lop内也可以进行变量扫描.

相关的,引用C11标准,章节§7.21.6.2,fscanf()

除非与指令匹配,否则尾部空白区域(包括换行符)将保持未读状态.[...]

因此,newline('\n'),尾部白色空格在输入缓冲区中未被读取.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有