자료구조

자료구조 제2강

한 면만 쓴 종이 2022. 1. 9. 18:32

문자열

/*1번*/
char str[6];
str[0] = 'h';
str[1] = 'e';
str[2] = 'l';
str[3] = 'l';
str[4] = 'o';
str[5] = '\0';

/*2번*/
char str[] = "hello";
/*3번*/
char *str = "hello";	// 이 방법은 수정이 불가능하다는 점에서 위 두 방법과 다르다.

 

string.h

 

strcpy 문자열 복사
strlen 문자열의 길이
strcat 문자열 합치기
strcmp 문자열 비교

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#define BUFFER_SIZE 100

/*
마지막에 입력한 문자열로 전부 출력됨
-> buffer에 저장된 값이 아닌 buffer의 주솟값이 저장되기 때문
*/
int main() {
	char* words[100];
	int n = 0;		// number of strings
	char buffer[BUFFER_SIZE];

	while (n<4 && scanf("%s", buffer) != EOF) {
		words[n] = buffer;
		n++;
	}
	for (int i = 0; i < 4; i++)
		printf("%s\n", words[i]);
}
int main() {
	char* words[100];
	int n = 0;		// number of strings
	char buffer[BUFFER_SIZE];

	while (n < 4 && scanf("%s", buffer) != EOF) {
		words[n] = _strdup(buffer);		// _strdup(str1) : str1의 복제본을 받아서 그 복제본의 주소를 return함
		n++;
	}
	for (int i = 0; i < 4; i++)
		printf("%s\n", words[i]);
}

_strdup(str1) : 매개변수로 받은 하나의 문자열을 복제하여 반환한다.

 

 

FILE

#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);
}

// 파일 읽고 쓰기
void main() {
	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);
}