제가 짠 건데요... 좀 봐주세요요
C언어 왕초보중에 왕초보입니다..
파일1
CID_10007 Gid_4128
CID_10021239 Gid_5468
CID_1046 Gid_1029
CID_1046 Gid_3658
파일2
CID_10021239 CID_77999 1.000000
CID_1046 CID_1046 1.000000
CID_10631 CID_6166 1.000000
목적은 파일 2를 이용해서 파일 1의 내용을 좀 걸러내는것입니다 예를들어 CID_10021239 CID_77999 1.0000 이 파일 2에 있으니까 파일1에서는 다른것들은 다 없어지고
오직 CID_10021239 Gid_5468 만 출력하게 하는것이 제 목표입니다 그 목표아래서 담과 같은 코드를 한번끄적여봣습니다
.
.
.
/
float tan; char cid[120],cid1[120],col1[120],col2[120];
//int col1;
n = 0;
i = 0;
while (1) {
if (!fgets(line, 1200,infile)) break;
memset(col1,'\0',120);
memset(col2,'\0',120);
sscanf(line,"%s %s",col1,col2);
while (1) {
if (!fgets(line, 1200,infile1)) break;
sscanf(line,"%s %s %f",cid,cid1,&tan);
if(strcmp(cid,col1)==0) printf("%s %s\n",col1,col2);
}
}
.
.
.
제 생각에 중요한 부분이라고 생각되는부분인데요 여기서 infile이 파일1 이고 infile1이 파일2 입니다
문제는 첫번째 while 루프에 들어가서 파일1의 첫줄을 읽어들인후 다시 안쪽의 while 루프로 들어가서 읽어들인 파일1의 첫줄과 파일2의 모든내용을 비교한후 안쪽의 while 루프를 끝낸후
파일1의 다음줄을 읽는게아니라 아주끝내버린다는겁니다. 결과가 전혀출력이되지않는거죠
기본적인 문제인거같긴한데 아직 제수준으로는 잘모르겟네요
고수님들의 조언부탁드립니다다
작성하신 소스를 봐서는 첫번째 while문때문에
작성하신 소스를 봐서는
첫번째 while문때문에 종료되는게 아니라 안쪽 while문때문에 종료되는것으로 보입니다.
원하시는 작업을 하시려면
두번째 while문에서 작업을 다 진행한후에 fseek, rewind를 이용해서 처음으로 이동시켜야합니다.
왜 하는지 궁금하다면 http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3/fseek 를 참고하세요.
근데 매번 읽는것보다 infile1의 데이타는 메모리에 올리고 하는게 낫지 않을까요?
흘러가고있는 지금 이 시간에 충실하자.
댓글 달기