진짜 파일입출력 못해먹겠으..
핫파랑
질문 제목 : 진짜 파일입출력 못해먹겠으..질문 요약 :파일에서 데이터를 안읽어오는 상황.질문 내용 :
파일입출력-이 놈. 포인터보다 더 짜증나네요. 파일에서 데이터를 안읽어와;;
struct Person{
char Name[20];
char pNumber[20];
};
void Roaddata(struct Person* person, int *count)
{
FILE * fp=fopen(tx.txt, a+t);
int co;
int i;
for(co=0; coMAX; co++){ //MAX=100
fscanf(fp, %s %s, &person[co].Name, &person[co].pNumber);
if(feof(fp)!=0) break;
}
*count=co;
fclose(fp);
}
절대 안읽어옵니다. 뭐 실수같은게 있는건가요?
scanf할때는 &-요거 붙이지 말래서 안붙이고 했다가 붙여도 상관은 없더라구요;;
------------------------------------------------------------------------
몇가지 테스트 해보니까 데이터를 읽어오긴합니다. 그런데 어느부분에서 문제가 생기는건지 저장되었다가 지워지는것 같아요;;
----------------------------
void Roaddata(struct Person* person, int *count)
{
FILE * fp=fopen(tx.txt, a+t);
int co;
int i;
for(co=0; coMAX; co++){
fscanf(fp, %s %s, person[co].Name, person[co].pNumber);
if(feof(fp)!=0) break;
puts(person[co].Name);
}
for(i=0; i=co; i++){
puts(person[co].Name);
puts(person[co].pNumber);
}
*count=co;
fclose(fp);
}
이렇게 바꿔서 실행해 보면 첫번째 루프에서는 이름이 정상적으로 출력되지만 이상하게도 두번째 루프에서는 4줄의 공백이 생겼습니다.(5줄인가..)--알고보니 6줄이네요.
그렇다면 co의 값은 2 라는건데... 뭐지 이거..
--------------------------------------------//a+t-at
공백몇줄 출력에쓰레기값 출력...
-
영빈이
그 말씀은 무슨뜻이죠?
-
아리
fp가 NULL이면....생성해줘야합니다.....
-
김자영
기초내용을 아주 별것 아닌걸로 여기시는듯 보이네요...-_-;;;;;;;//구구단은 기초적인것이지만...평생 사용하는 것이지요.....//
-
맑은가람
ㅡㅡ 제가 만드는 프로그램은 주소록 프로그램입니다. 파일이 없으면 만들어야지요.
-
착히
...-_-...... 없으면.....파일을 안읽어야죠.....-_-.....화일을 생성해주고 끝내면 됩니다....
-
촉촉한 초코칩
어차피 파일에서 데이터를 읽어들이는것 뿐이니 오류만 나지않으면 상관 없죠..
-
물보라
마법의손//\rt\로 할경우 파일없을때 에러 먹습니다. 그래서 \w+t\ 아니면 \at\
-
아픔이보여
&를 왜 붙이는지 모르시는것 같네요...음.... 그리고.....fopen(\tx.txt\
-
란새
문제는 파일의 끝을 만났을때 루프를 벗어나는 것인데, 그것을 벗어나지 못하고 쓰레기 값을 출력하더라구요. 파일의 끝을 만났을때 루프를 벗어나게 하는 방법, 고칠점 부탁드려요.
-
오빤테앵겨
fscanf(fp, \%s %s\