c언어 프로그래밍 scanf 함수로 문자열 입력
c언어 프로그래밍 scanf 함수로 문자열 입력
■ c언어에서 데이터를 입력받는 함수 중 하나가 scanf()인데요. 이 녀석을 이용해서 정수를 입력받을 때는 다음 예제와 같이 저장할 변수 앞에 "&"를 붙여줘야 합니다.
▲ 정수를 입력받아서 'x' 변수에 저장하고 있는 과정인데 이렇게 x에 정수를 저장하기 위해서 "&"연산자를 붙이고 있습니다. 하지만 문자열을 입력받을 때는 "&" 연산자를 붙이지 않습니다. 좀 더 자세한 내용은 포인터 정리할 때 다시 언급하기로 하고 일단 이렇게 암기하고 넘어갈게요.
c언어에서는 문자열을 출력할 때 서식 문자 "%s"를 이용하듯이 입력받을 때도 마찬가지 입니다. 예제를 만들어서 확인해보겠습니다.
▲ 길이가 50인 char 배열 str을 선언하고 있으며 문자열을 입력받기 위해서 서식 문자 "%s"을 사용하고 str 변수에 저장할 때 "&"연산자를 사용하지 않고 있습니다. 프로그램을 실행해서 입력해보고 제대로 저장되고 출력되는지 확인해보겠습니다.
▲ 이렇게 "&"가 없어도 제대로 저장되고 출력되는 걸 확인할 수 있습니다. 그리고 c언어는 이렇게 입력받아도 마지막에 "null"문자가 입력되는데요. 지난 글에서 c언어의 문자열의 끝에는 무조건 "NULL"문자가 입력된다고 정리했었습니다. 이 예제에서도 끝에 null 문자가 포함됐는지 확인해보겠습니다.
while 문을 이용해서 null 문자를 만날 때까지 str에 저장된 값들을 index 값을 이용해서 하나씩 출력해보겠습니다. 마지막에 null 문자가 포함되어 있다면 그 전에 입력된 단어까지만 출력될 것입니다.
▲ 입력받은 값에 str[index] 값으로 접근해서 해당 char를 "%c"로 출력하고 있는데요. while 문이 실행되는 조건은 null 문자를 만날 때까지 입니다. 프로그램을 실행해서 적당한 문자열을 입력해보겠습니다.
▲ hello를 입력해봤습니다. 분명히 "o"다음에 null 문자가 포함되어 있기 때문에 "o"까지만 출력되는 것입니다.
이렇게 해서 c언어에서 scanf() 함수를 이용해서 문자열을 입력받고 저장하는 과정을 정리해봤는데요. 다른 데이터와 다르게 입력받아서 저장할 때는 "&"연산자를 사용하지 않으며 값을 입력받으면 무조건 마지막에 null 문자가 저장되는 것까지 확인해봤습니다. 수고하셨어요.