파일 입출력에 관한 질문
그리
#include stdafx.h
int main()
{
int i,j;
int count;
char ch[50];
FILE * file = fopen(mystory.txt, rb);
if(file==NULL){
printf(file open error!);
return 1;
}
while(1)
{
fgets(ch, 50, file);
if(feof(file)!=0){
break;
}
printf(%s, ch);
}
fclose(file);
return 0;
}소스를 보시면 아시겠지만 mystory.txt에 있는 데이터를 몽땅 모니터로 출력하는겁니다
char형 배열을 선언해서 그 배열로 문자열을 저장한 후
출력을 하는 프로그램이고, 파일의 끝을 만나면 빠져나오게 했습니다.
이게 이해가 잘 안되는게 char ch[50]으로, 즉 50바이트의 배열을 선언했잖아요
이 말인 즉슨.. 한 줄을 50바이트만큼 읽어들인다음 다음줄로 넘어가고, 또 읽어드리고 넘어가고
그런단 말인가요??while문안에서 fgets함수를 써서 읽어들이고 있지만 fgets함수가 한줄을 읽어드리고
다음줄로 자동으로 넘어가는게 맞다고 알고 있습니다.
그리고 배열을 선언할때 크기를 50이 아닌 임의의 값으로 효율적인 메모리 할당을 위한 방법은
동적 할당밖에 없는거죠?
글이 긴데 답변 부탁드리겠습니다. 감사합니다.
-
지우
동적할당을 하는이유는 배열의 크기를 컴파일단계에서 알 수 없을때 쓰는건데요 만약 파일 전체 내용을 하나의 배열에 넣고 싶다면 한번 파일 전체를 while루프를 돌려 null을 만날때까지 그냥 돌리고요 그 안에 카운트를 넣으세요 그다음 동적 할당시 이 카운트 크기만큼 잡으면 돼요. 보통 한줄을 입력 받을때는 256바이트를 쓰네요..
-
곰돌곰돌
텍스트 파일을 읽는 용도라면
\rb\ 대신에 \rt\를 사용하십시오.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
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 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |
2691542 | /=의 용도를 알려주세요 ㅠㅠ! (2) | 아라 | 2025-04-14 |