2013-02-09 101 views
-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(); 
} 

我會很高興,如果有人看我的問題,並給一些解決方案..

回答

1

錯誤行應該是這樣的:

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

或只是

FILE *p; 
// Keep the fopen call below 
+0

不,它不應該。該行試圖*聲明* fopen函數和'FILE *'對象'p'。 – 2013-02-09 03:05:58

+0

不應該只是'FILE * p;'?下面有一個正確的「fopen」調用。 – zwol 2013-02-09 03:06:00

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。問題是,你還沒有告訴scanfname有多大。如果我輸入20個字符,則scanf將寫入name的末尾。歡樂將隨之而來。