朋友您好我是C语言的新手 我在程序中遇到错误(在turbo c编译器中)
#include<stdio.h>
#include<conio.h>
void main()
{
FILE *fopen().*p;//error call of nonfunction
char name[10];
p=fopen("rec.dat","r");
printf("enter your name:");
scanf("%s",name);
fprintf("p,"my name is %s",name);
fclose(p);
getch();
}
如果有人看我的问题并给出一些解决方案,我会很高兴。
答案 0 :(得分:4)
您发布的代码最有可能与您编译的代码不同。你应该得到一些语法错误消息,你没有提到。寻找不匹配的引号。
你的专栏:
FILE *fopen().*p;
可能是:
FILE *fopen(),*p;
这将声明fopen()
函数和FILE*
对象p
。但是完全没必要自己宣布fopen
;这就是#include <stdio.h>
的用途。所以只需将其更改为
FILE *p;
在您访问它的同时,将void main()
更改为int main(void)
,并删除任何告诉您void main()
正确的书。
scanf("%s",name);
不安全。它会将尽可能多的以空格分隔的字符序列读入name
。问题是,你没有告诉我scanf
有多大name
。如果我输入20个字符,scanf
将写入name
的结尾。随之欢闹。
答案 1 :(得分:1)
错误行应如下所示:
FILE *p = fopen("rec.dat", "r");
// remove the subsequent call of fopen below
或只是
FILE *p;
// Keep the fopen call below