-1

你好朋友,我是 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();
}

如果有人看到我的问题并给出一些解决方案,我会很高兴..

4

2 回答 2

4

您发布的代码很可能与您编译的代码不同。您应该已经收到了许多您没有提及的语法错误消息。查找不匹配的引号。

您的线路:

FILE *fopen().*p;

可能是为了:

FILE *fopen(),*p;

这将声明fopen()function 和FILE*object p。但是完全没有必要声明fopen自己;这就是它的#include <stdio.h>用途。所以只需将其更改为

FILE *p;

当您这样做时,请更改void main()int main(void),并删除任何告诉您void main()正确的书。

而且scanf("%s",name);是不安全的。它会将尽可能多的以空格分隔的字符序列读入name. 问题是,你还没有告诉它有scanf多大name。如果我输入 20 个字符,scanf将写在name. 欢闹会接踵而至。

于 2013-02-09T03:07:06.450 回答
1

错误行应该是这样的:

FILE *p = fopen("rec.dat", "r");
// remove the subsequent call of fopen below

要不就

FILE *p;
// Keep the fopen call below
于 2013-02-09T03:04:54.720 回答