|  |
| |
| 릴라고 |
sample.s 파일에 있는 문자열을 읽어와서 \t\n 를 만날때마다 n을 1씩 증가시켜서 출력시키는 프로그램이네요. 아주 기초적인 수준인데.. 이런것조차 읽을수 없으신 실력이라면 기초가 안되어있는거예요. 열혈강의 첨부터 복습하세요~~ |
2011/09/13 |
|
| 릴라고 |
#include <stdio.h> /* project #1 */
#include <string.h>
void main() {
FILE *fp; //파일 핸들변수 선언
char buf[80]; //sample.s에서 읽은 문자열 담을 버퍼 선언
int n = 0;
if ((fp = fopen("sample.s", "r")) == NULL) {
//sample.s파일을 읽기모드로 열고, 파일핸들변수 fp에 오픈된 파일의 핸들값을 넣는다. 만약 NULL이라면 아래코드 실행.
fprintf(stderr, "file not found...\n"); exit(1);
//NULL이라면 file not found라는 문자열을 출력후 종료시킨다.
}
while(fgets(buf, sizeof(buf), fp) != NULL) {
//아까 file이 open되지않았을때 자동종료이므로 이 코드는 자동으로 file이 open되었을때 실행되는 코드이다. fp파일핸들변수에 담긴 핸들값을 이용하여 해당 핸들값 파일에서 buf배열 크기인 80만큼을 읽어온다음 buf배열에 저장시킨다.
n += get_token_num(buf);
//buf배열을 get_token_num함수에 인자로 전달한다. get_token_num함수는 buf문자열을 \t\n단위로 문자열을 자르는데, 자를때마다 n값을 1씩 증가시킨다. 그 n값을 리턴해주는게 get_token_num함수가 하는일. }
fclose(fp);
//fp파일핸들을 닫는다.
printf("Number of token = %d\n", n);
//n값을 출력해준다.
}
int get_token_num(char *bp)
{
char *cp;
int n = 0;
for(cp = strtok(bp, " \t\n"); cp != NULL; )
{
n++;
cp = strtok(NULL, " \t\n");
}
return(n);
} |
2011/09/13 |
|
| prosper |
항상 기초부터 보시길 바랍니다.
문법을 모르는데 코드만 본다고 해결되지 않습니다.
공부하는 습관을 첨음 잘못들이면 꾸준히 똑같습니다.
#include 하는역활?
<stdio.h> 와 "stdio.h"의 차이는?
메인함수의 void 뜻은? int로 바뀌면 어디를 수정해야 하는지?
C에서 왜 항상 서두에 선언을 하는지?
변수를 사용하기위해서 왜 초기화를 하는지?
변수 초기화를 하지 않으면 어떻게 되는지?
포인터는 무엇인지?
fopen() , fprintf(),exit(),while(),return(),strtok(),for() 함수 원형은 어떻게 되는지?
사용자 함수는 어떻게 만드는지?
형타입은 무엇이고 종류는 얼마나되며, 형타입 변환은 어떻게 하는지?
연산자는 무엇이고 어떻게 사용하는지?
이정도를 안다면 이런 질문은 하지 않을듯 싶네요. |
2011/09/16 |
|
별빛을담아 |
근데 결정적으로 문법이 좀 특이한게
main 앞에 함수선언이 없이 뒤에 정의만 했는데, 과연 컴파일이 되었을까요? ㅇㅅㅇ |
2011/09/16 |
|
| 푼수왕자 |
옛날 고릿적에 Turbo-C 라는 도스용 C 에서는 굳이 main앞에 선언 안해주고 구현해도 컴파일 되었던 기억인데... 잘 모르겠네요. 요즘 C 컴파일러는 에러내는지 워닝인지.. 걍 빌드까지 되는지.. ㅎㅎ 단 제 기억이 맞다면요. ㅋ |
2011/09/23 |
|