作者nikeasyanzi (nikeasyanzi)
看板C_and_CPP
標題[問題]C觀念問題local與global
時間Mon Oct 26 10:11:31 2009
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include <ctype.h>
#define Size_Of_Tmp 512
int ReadFile(char *filename,FILE *fptr){
char tmp[Size_Of_Tmp];
fptr=fopen(filename,"r");
if(fptr==NULL){
printf("%s open error\n",filename);
printf("按任意鍵結束程式\n");
fgets(tmp,Size_Of_Tmp,stdin);
exit(0);
}
return 0;
}
int main(){
FILE *ptr=NULL;
char tmp[Size_Of_Tmp];
ReadFile("orz",ptr);
memset(tmp,'\0',sizeof(tmp));
while(fgets(tmp,sizeof(tmp),ptr)){
printf("%s\n",tmp);
memset(tmp,'\0',sizeof(tmp));
}
return 0;
}
我想請問一下為何這樣會有錯誤?? 我並非沒遵守local與global的規範
問題似乎出在ptr上 進入ReadFile時 ptr有正確被assign
但出了function ptr就被歸零了!!
原因是??
--
CyberPanel 5000CP 換 NT.500
http://myurl.com.tw/05bd
EmailCash 5000e 換 NT.500
http://myurl.com.tw/rgdq
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.137.204.228
※ 編輯: nikeasyanzi 來自: 114.137.204.228 (10/26 10:12)
推 Bencrie:FILE** fptr 10/26 10:13
→ nikeasyanzi:喔喔 對 這似乎之前版上也有討論過!! 10/26 10:14
→ nikeasyanzi:謝謝^^ 10/26 10:14
→ Bencrie:因為你會修改到傳進來的FILE*,所以你需要FILE** 10/26 10:14