문자열
-문자열은 char타입의 배열의 각 칸마다
문자 하나씩 저장된다.
문자열 배열
char str[6];
문자열의 마지막은 null이 저장되어있다.
문자열의 끝을 표시하는 역할을 한다.
즉 배열의 크기가 문자열의 길이보다 적어도
1만큼 길어야한다.
문자열을 생성하는 편리한 방법을 제공한다.
1.char str[] = "hello";
-hello와 null 값으로 저장된 char형 배열.
변경이 가능하다.
2.char *str = "hello";
-String literal 수정이 불가하다.
string.h라이브러리 주요함수
strcpy -문자열 복사
strlen - 문자열의 길이
strcat - 문자열 합치기
strcmp-문자열 비교
이외에도 라이브러리에 더 많은 함수가 있다.
*문자열을 출력할시 마지막 null의 값을
주어야 printf 할 시에 어디까지가 문자열의
끝인지 알 수 있다.
ex)
int main(){
char *words[100];
char buffer[BUFFER_SIZE];
int n = 0; //number of strings
while(scanf("%s",buffer) != EOF){
words[n]== buffer;
n++;
}
}
scanf("%s",buffer)
-문자열은 scanf에 &을 붙이지않고 쓴다.
words[n]== buffer;
-사용자로부터 하나의 단어를 입력받아서
words[n]에 저장
사용자가 입력할 단어를 buffer이라는 배열에
저장했다.
buffer은 길이가 100인 문자열 배열의
시작주소를 저장하는 포인터 변수이다.
words[n]== buffer;
-buffer이 가진 포인터 주소 값을 words[n]에
저장한다. n이 증가해도 buffer에 저장된 하나의 문자열이 계속해서 저장된다.
즉 buffer는 처음에 입력된 단어는 지워지고
두번째 입력되는 단어가 새로이 저장된다.
그럼 words[0]에도 buffer의 주소,
words[1]에도 buffer의 주소가 저장된다.
그러므로 buffer에 마지막으로 입력한 값이
words[n]에 모두 저장된다.
따라서 buffer에 저장된 이전의 값들을
따로 copy해야 한다.
words[n]== strdup(buffer);
//strcpy(str2,str1) str1을 str2로 복사
//strdup 매개변수를 받아서 이 매개변수의
복제본을 만든다.
파일로부터 읽기
#include <stdio.h>
void main(){
FILE * fp = fopen("input.txt,"r");
char buffer[100];
while(fscanf(fp,"%s",buffer) != EOF)
printf("%s",buffer);
fclose(fp);
}
오픈한 파일로부터 문자열을 하나씩 읽어온다.
그리고 출력.
파일 읽고 쓰기
#include <stdio.h>
void main(){
FILE * in_fp = fopen("input.txt,"r");
FILE * out_fp = fopen("input.txt,"w");
char buffer[100];
while(fscanf(fp,"%s",buffer) != EOF)
fprintf(out_fp,"%s",buffer);
fclose(in_fp);
fclose(out_fp);
}
'프로그래밍 > 자료구조' 카테고리의 다른 글
자료구조 공부하기 추상 데이터 타입 (0) | 2016.12.30 |
---|---|
자료구조 공부하기 자료구조란? 알고리즘이란? (0) | 2016.12.30 |
자료구조 메모리,포인터,변수 예제 (0) | 2016.12.30 |
동적 메모리 할당 (0) | 2016.12.30 |
문자열을 입력받아 문자열의 길이를 출력해보는 코드 (0) | 2016.12.30 |