我无法弄清楚我的代码有什么问题.这是我的代码:
#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'
),尾部白色空格在输入缓冲区中未被读取.