따라 배우는 C언어 : 12_2
🙇♀️12_2
🪐fgets() fputs()
- fgets() and fputs
char words[STRLEN] = "";
fgets(words, STRLEN, stdin); // does NOT remove \n
stdin을 적어야함 -> 콘솔 입력도 받을수 있도록하는 것
gets보다 안정적이다 -> 런타임 에러가 안남
/n
을 지워주지 않기 때문에 \0
을 대체해줘야 함
// \n을 \0으로 대체하기
int i = 0;
while (words[i] != '\n' && words[i] != '\0')
i++;
if (words[i] == '\n')
words[i] = '\0';
- 문자열 입력
char small_array[5];
puts("Enter long string : ");
fgets(small_array, 5, stdin);
fputs(small_array, stdout);
여기서 긴 글자를 입력하면 처음으로부터 4글자만 출력된다. => 마지막 \0이 포함되어있기 때문에
/* Repeating short reading */
char small_array[5];
puts("Enter long string:");
while (fgets(small_array, 5, stdin) != NULL && small_array[0] != '\n')
fputs(small_array, stdout);
- scanf_s 사용하기
char str1[6], str2[6]; //int count = scanf("%5s %5s", str1, str2); int count = scanf_s("%5s %5s", str1, 6, str2, 6); printf("%s|%s \n", str1, str2);
- 문자열 입력함수
char* CustomStringInput(char* str, int n) { char* ret_ptr; int i = 0; ret_ptr = fgets(str, n, stdin); if (ret_ptr) { while (str[i] != '\n' && str[i] != '\0') i++; if (str[i] == '\n') str[i] = '\0'; else while (getchar() != '\n') // clear buffer continue; } return ret_ptr; }
🪐문자열을 출력하는 다양한 방법들
- puts() : add \n at the end
char str[60] = "String array initalized";
const char* ptr = "A pointer initalized";
puts("String without \\n");
puts("END");
puts(TEST);
puts(TEST + 5);
puts(&str[3]);
puts(ptr + 3);