<div>아래의 코드를 실행하면</div> <div><br></div> <div>kate</div> <div><br></div> <div>johne</div> <div><br></div> <div>jackson</div> <div>으로 나오고 <span style="font-size:9pt;line-height:1.5;">fputs.txt화일에 같은 내용이 저장되는데요.</span></div> <div><span style="font-size:9pt;line-height:1.5;">그런데 </span></div> <div><span style="font-size:9pt;line-height:1.5;">while(fgets(Getnames[i],10,fp)!=NULL)부분을 만약에</span></div> <div>while(fgets(Getnames[i],2,fp)!=NULL)로 고치면 </div> <div> <div>k</div> <div>a</div> <div>t</div> <div>e</div> <div><br></div> <div>j</div> <div>o</div> <div>h</div> <div>n</div> <div>e</div> <div><br></div> <div>j</div> <div>a</div> <div>c</div> <div>k</div> <div>s</div> <div>o</div> <div>n</div></div> <div><span style="font-size:9pt;line-height:1.5;">으로 나오고</span></div> <div>while(fgets(Getnames[i],5,fp)!=NULL)로 고치면 </div> <div> <div>kate</div> <div><br></div> <div>john</div> <div>e</div> <div><br></div> <div>jack</div> <div>son</div></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;">으로 나오는데요</span></div> <div><span style="font-size:9pt;line-height:1.5;">그런데 도무지 이해되지 않는 것은 제가 알기로는 fget함수는 지정된 바이트수만큼 읽거나 '\n'를 입력받거나 리턴값이 NULL이 나오면 끝나는 것으로 알고 있는데요</span></div> <div><span style="font-size:9pt;line-height:1.5;">그렇다면 만약 </span><span style="font-size:9pt;line-height:1.5;">while(fgets(Getnames[i],5,fp)!=NULL)라면 5개('</span><span style="font-size:9pt;line-height:1.5;">k','a','t'',e','\n\)</span></div> <div><span style="font-size:9pt;line-height:1.5;">까지 읽고 fgets은 더이상 동작하지 않아야 하지 않나요?</span></div> <div><span style="font-size:9pt;line-height:1.5;">근데 결과를 보면 계속해서 문자열를 읽고 있는데 이건 오로지 while의 조건인 리턴값이 NULL이 아니기 때문에 계속 동작하는 건가요?</span></div> <div>그렇다면 fget이라는 함수가 동작을 멈추게 하는 조건인 <span style="font-size:9pt;line-height:1.5;">지정된 바이트수만큼 읽거나 '\n'을 입력받는 조건은 전혀 의미가 없지 않나요?</span></div> <div>fgets는 지정된 바이트 만큼 읽고 더이상 동작을 멈추는데 while문에서는 그 동작을 멈추는 조건들(<span style="font-size:9pt;line-height:1.5;">지정된 바이트수만큼 읽거나 '\n')이</span><span style="font-size:9pt;line-height:1.5;"> 전부 취소가 되어버리는 거 같은데 이러면 뭔가 논리가 이상하다고 생각하는데요.</span></div> <div>while문에서는 fgets의 종료조건이 무시되어도 상관없는지 아니면 제가 생각하는 것이 아닌 다른 조건에 의해서 fgets가 종료되지 않고 동작하는건지 알고 싶네요.</div> <div><span style="font-size:9pt;line-height:1.5;"> </span></div> <div><br></div> <div>#include <stdio.h></div> <div> <div><span style="font-size:9pt;line-height:1.5;">#include<stdlib.h></span></div></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div>void main()</div> <div>{</div> <div><br></div> <div>FILE *fp;</div> <div>int i;</div> <div>char name[3][10]={"kate","johne","jackson"};</div> <div>char Getnames[3][10];</div> <div><br></div> <div>if((fp=fopen("fputs.txt","w"))==NULL)</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>puts("error"),exit(0);</div> <div><br></div> <div>//fputs</div> <div>for(i=0;i<3;i++)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fputs(name[i],fp);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fputc('\n',fp);</div> <div>}</div> <div>fclose(fp);</div> <div><br></div> <div>if((fp=fopen("fputs.txt","r"))==NULL)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>puts("error");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>exit(0);</div> <div>}</div> <div>//fgets</div> <div>i=0;</div> <div>while(fgets(Getnames[i],10,fp)!=NULL)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>puts(Getnames[i]);</div> <div>}</div> <div>//</div> <div>fclose(fp);</div> <div>}</div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.