종료명령어가 파일에 써지는 문제
달님
질문 제목 :
파일에 입력받은 내용을 쓰는 프로그램
2개의 코딩입니다.
첫번째 건 이름을 입력받을 때exit가 입력되면 입력을 종료하고 exit 전 데이터 까지만 파일에 써야하는데
exit까지 이름으로 인식해 exit 0 0 0 0 00 이런 식으로 파일에 쓰고있습니다.
두번째 건 첫번째걸 단순화시킨 것으로 exit를 파일에 출력하지 않습니다.
즉, 제대로 쓴다는 말입니다.
둘의 차이가 없는 것 같은데 첫번째건 안되고 두번째건 원하는데로 작동하네요.
이유가 무엇인지 설명 부탁드립니다.
참고로 텍스트 파일을 a+ 모드로 열었습니다. 색깔로 표시된 부분 위주로 보시면 될 것 같네요.
질문 내용 :
while(1)
{
printf(이름: );
scanf(%s, data[cnt].name);
getchar();
if(!strcmp(data[cnt].name, exit)) //이름에 exit가 입력되면 종료
{
break;
/*이름에 exit가 입력되면 종료되도록 되어있음
exit는 종료명령어로 파일에 exit가 쓰여지면 안됨
그러나 exit가 종료명령어 이면서 이름처럼 인식되어
파일의 마지막에 exit 0 0 0 0 0.00 식으로 출력됨 */
}
printf(국어: );
scanf(%d, &data[cnt].kor);
getchar();
printf(영어: );
scanf(%d, &data[cnt].eng);
getchar();
printf(수학: );
scanf(%d, &data[cnt].mat);
getchar();
cnt++;
}
for(i=0;i=cnt;i++) //cnt값을 넘겨받아 입력받은 만큼만 파일에 씀
{
data[i].tot=data[i].kor+data[i].eng+data[i].mat; //총점 구함
data[i].avg=(float)data[i].tot/3; //평균 구함
fprintf(fp,%s|%5d|%5d|%5d|%5d|%10.2f |\n,data[i].name,data[i].kor,data[i].eng,data[i].mat,
data[i].tot,data[i].avg); //파일에 출력
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
while(1)
{
printf(이름을 입력하세요.\n);
scanf(%s, Number[cnt].name);
getchar();
/*이름을 입력받은 직후 strcmp로 입력받은 이름이 exit와 같은지 확인.exit이면 입력을 종료 */
if(!strcmp(Number[cnt].name, exit))
{
break;
}
printf(번호를 입력하세요.\n);
scanf(%d, &Number[cnt].num);
getchar();
cnt++;
}
printf(입력을 종료합니다.\n);
//i=0부터 시작해서 cnt,입력받은 횟수 만큼만 출력함
for(i=0;icnt;i++)
{
fprintf(fp,%s %d\n,Number[i].name, Number[i].num); //파일에출력
}
-
향율
답변 감사합니다. 그렇게 하니까 되네요.
-
먹딸기
if(!strcmp(data[cnt].name, \exit\)) {break;} 이부분에서 이미 cnt 값이 하나더 증가했기 때문에 break 문을 실행하기 전에 cnt 값을 하나 줄여주시면 됩니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |