【发布时间】:2023-03-18 07:16:01
【问题描述】:
我知道这是一个非常基本的问题,但是没有它我就无法继续前进,而且它在其他地方也没有得到清楚的解释。
为什么这个编程给了我这么多未声明标识符的错误?不过我已经声明了。
这些是我得到的错误。
Error 2 error C2143: syntax error : missing ';' before 'type'
Error 3 error C2065: 'ptr' : undeclared identifier
Error 4 error C2065: 'contactInfo' : undeclared identifier
Error 5 error C2059: syntax error : ')'
Error 15 error C2223: left of '->number' must point to struct/union
还有更多...
#include<stdio.h>
#include<stdlib.h>
typedef struct contactInfo
{
int number;
char id;
}ContactInfo;
void main()
{
char ch;
printf("Do you want to dynamically etc");
scanf("%c",&ch);
fflush(stdin);
struct contactInfo nom,*ptr;
ptr=(contactInfo*)malloc(2*sizeof(contactInfo));
nom.id='c';
nom.number=12;
ptr->id=nom.id;
ptr->number=nom.number;
printf("Number -> %d\n ID -> %c\n",ptr->number,ptr->id);
}
【问题讨论】:
-
永远不要在
stdin上调用fflush- 它是 UB。 -
也许你应该多注意阅读C书
-
@PaulR 为什么会这样?我读过,每当您需要使用 scanf 从 unser 获取两个输入时,您都会执行 fflush 以删除管道中的 \n?
-
@shashlearner:
fflush仅对输出或更新流有效 - 对输入流使用fpurge,或者只调用getchar()丢弃不需要的字符。 -
@PaulR 好的。但是代码仍然有问题。我已经去掉了typecast并使用了sizeof *ptr,仍然有20个错误!