🙇‍♀️12


🪐문자열을 정의하는 방법들

숫자 하나 : 1

숫자의 배열 : 0123456789

문자 하나 : ‘a’

문자의 배열 : ‘H’ ‘e’ ‘l’ ‘l’ ‘o’ ‘\0’

char words[MAXLENGTH] = "A string in an array";
const char* pt1 = "A pointer to a string";

puts("Put() adds a newline at the end: "); // puts() add \n at the end
puts(MESSAGE);
puts(words); // char words[21] removes this warning
puts(pt1);
words[3] = 'p'; // OK
puts(words);
// pt1[8] = 'A'; // Error 읽기 전용 데이터

char greeting[50] = "Hello, and" " How are""you"
	" today!";

// char greeting[50] = "Hello, and How are you today!"; // 위와 동일함

puts(greeting);

printf("\" To be, or not to be\" Hamlet said.\n");

printf("%s, %p, %c\n", "we", "are", *"excellent programmers");


🪐문자열을 입력받는 다양한 방법들

/* Creating Space */

//char* name = ""; // Error at RUN-TIME
// 문자열을 입력 받을 때는 메모리 공간을 확보하고 입력 받아야 한다

//char name[STRLEN];
//int result = scanf("%s", name);

// 배열을 이미 주소값이란 의미를 내포하므로 &를 사용하지 않는다


  • scanf() vs gets()
    • scanf() reads one word
    • gets() reads one line and removes \n and add \0
char words[STRLEN] = ""; // Warning without initialization
// gets(words); // gets recrives pointer. No idea when string ends.
// gets는 포인터만 받기에 시작위치는 알지만 얼마나 긴지 모른다.
gets_s(words, sizeof(words)); // C11
// int result = scanf("%s", words);
printf("START\n");
printf("%s", words);	// no \n at the end
puts(words);			// puts() adds \n at the end
puts("END.");

배열의 공간을 작게 잡고 더 큰값을 입력
런타임에러 발생

태그:

카테고리:

업데이트: