본문 바로가기

c언어/활용편4

scanf("%c")의 문제점 scanf("%c", &c); 위와 같은 코드로 하나의 문자를 입력받으려고 할 때, 종종 문제가 생기곤 한다. 정확한 원리는 모르겠지만 scanf("%c", c); 보다 아래에 있는 코드가 먼저 실행되는 것처럼 보이는 경우가 발생한다. 키보드의 입력은 모두 입력버퍼 라는 곳에 담기게 되는데, a를 입력하고 엔터키('\n')를 누르면 'a'라는 문자와 '\n'라는 문자 모두 입력 버퍼에 들어가게 된다. scanf는 입력 버퍼에 있는 두 문자를 모두 읽어버리는데 이게 문제의 원인이다. 반복문 안에 scanf("%c")가 있으면 처음에는 a를 받고, 그 다음 반복에서 자동으로 '\n'을 받게된다. 사용자는 아직 두번째 반복에서 문자를 입력하지 않았다고 생각하지만 컴퓨터는 개행문자를 받아서 반복문을 한 번 더 .. 2023. 1. 15.
c에서 문자열 여러 개를 배열에 저장하는 법 #include int main() { char* strArr[3] = {"첫번째", "두번째", "세번째"}; printf("첫번째 : %s\n", strArr[0]); printf("두번째 : %s\n", strArr[1]); printf("세번째 : %s\n", strArr[2]); } char* 로 배열을 만들면 된다. 또는 scanf("%d", &n); char strArr[n][50]; for(int i = 0; i < n; i++){ scanf("%s", strArr[i]); } for(int i = 0; i < n; i++){ printf("%s\n", strArr[i]); } 이차원 배열을 만들어 주면 된다. 주의할 점은 문자열의 개수를 앞에 적어주고 문자열의 최대 길이를 뒤에 적어 줘야.. 2022. 11. 19.
c에서 공백포함 문자열 입력 int word[100]; gets[word]; 이렇게 하거나 scanf("%[^\n]s", word); 이렇게 하면 공백이 포함된 문자를 입력받을 수 있다. 2022. 10. 8.
반복문에서 함수 실행 (시간을 줄이는 법) 예를 들어 for(int i = 0; i < strlen(arr); i++) 이런식으로 코드를 짜면 반복문이 한 바퀴 돌때마다 strlen 함수를 실행해야 되서 시간을 많이 잡아먹는다. 이럴 때는 int len = strlen(arr); for(int i = 0; i < len; i++) 이런 식으로 함수값을 변수에 넣어놓고 그 변수를 반복문 안에 넣어주면 시간을 단축할 수 있다. 2022. 10. 8.