调用非功能错误

时间:2013-02-09 03:00:50

标签: c file-io

朋友您好我是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();
}
如果有人看我的问题并给出一些解决方案,我会很高兴。

2 个答案:

答案 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