본문 바로가기
programming/C

[C언어] 자료구조 - 문자열, 파일 읽어오기

by 몽구스_ 2020. 8. 8.
728x90

 

문자열이란?

char 타입의 배열 : 한칸에 문자하나

마지막 문자열은 '\0' null값

=>

C에서는 char str[] = "hello"; 

이것은 str

h

e

l

l

o

\0

과 같음

 

string literal

char *str = "hello"; (수정 불가능)


 

string.h라이브러리

strcpy

문자열 복사

strlen

문자열 길이

strcat

문자열 합치기

strcmp

문자열 비교


 

strdup함수를 이용하여

words할당하기

 

 

ex) words

rain

cloud

sky

sun

 

 

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
#define BUFFER_SIZE 100
int main(void){
    char *words[100];
    int n = 0//num of str
    char buffer[BUFFER_SIZE];
 
    while(n<4 && scanf("%s", buffer) != EOF){
        //words[n] = buffer;하면 마지막 값만 나옴
        words[n] = strdup(buffer);//strdup은 buffer의 복제본 주소를 넘김
        n++;
    }
    
    for (int i = 0; i < 4; i++){
        printf("%s\n", words[i]);
    }
}
 
//strdup함수
char *strdup (const char *str)
{
  char *p;
 
  p = (char *malloc (strlen (str) + 1);
  if (p)
    strcpy (p, str);
  return p;
}
cs

 


파일내용 출력

 

1
2
3
4
5
6
7
8
#include <stdio.h>
int main(void){
    FILE *fp = fopen("input.txt""r");
    char buffer[100];
    while (fscanf(fp, "%s", buffer) != EOF)
        printf("%s", buffer);
    fclose(fp);
}
cs

 


파일읽어오고 다른 파일에 복사

 

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(void){
    FILE *in_fp = fopen("input.txt""r");
    FILE *out_fp = fopen("output.txt""w");
    char buffer[100];
    while (fscanf(in_fp, "%s", buffer) != EOF)
        fprintf(out_fp, "%s", buffer);
    fclose(in_fp);
    fclose(out_fp);
}
cs

 

 

댓글