SMALL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | #include <stdio.h> char *my_token(char *ps); int main(void) { char str[80]; char *p; printf("문장 입력 : "); gets(str); while((p = my_token(str)) != NULL) // 앞에서 부터 차례로 분리한 단어의 { // 포인터를 반환하여 출력한다 printf("%s\n", p); } return 0; } char *my_token(char *ps) { static char *next_location = NULL; // 정적 변수 사용. char *temp; // 임시 포인터 static int flag = 0; // 상태 변수, 문자열을 모두 처리하면 1, 아니면 0. char *start; // 분리할 단어의 시작 위치 if(ps == NULL) return NULL; // 매개 변수 값이 NULL이 오면 NULL 반환 if(flag == 1) return NULL; // 문자열을 모두 읽은 경우 NULL 반환 if(next_location == NULL) // 분리할 문장이 없다면 { start = ps; // 시작 위치 설정 } else { start = next_location + 1; // 끊어 읽을 위치 설정 } temp = start; // 포인터 이동을 위한 변수 설정 while((*temp != ' ') && (*temp != '\0')) // 공백도 아니고 널 문자도 아닐 경우 포인터 증가. { temp ++; } if(*temp == '\0') // 문자열이 끝나면 last를 1로 설정. { flag = 1; } else { *temp = '\0'; // 아니면 공백 문자를 널 문자로 설정 } next_location = temp; // 분리할 위치 기억 return start; // 시작 주소 반환 } | cs |
LIST
'개인자료 > 프로그래밍' 카테고리의 다른 글
[임베디드 C] 특정 비트 연산 (3) | 2015.05.17 |
---|---|
[C언어] 인사말 정렬 프로그램 (0) | 2015.05.16 |
[C언어] 프로필 교환 프로그램 (0) | 2015.05.16 |
[C언어] 방명록 프로그램 (0) | 2015.05.15 |
[C언어] 지점별 실적관리 프로그램 (0) | 2015.05.15 |
[C언어] 전역 변수 교환 프로그램 (0) | 2015.05.15 |
[C언어] 단어 이어 출력하기 (0) | 2015.05.13 |
[C언어] 단어정렬 프로그램 (0) | 2015.05.13 |
[C언어] 대소문자 변환 프로그램 (0) | 2015.05.12 |
[C언어] 문자열 숫자 변환 프로그램 (0) | 2015.05.12 |