c언어 strtok을 이용한 공백제거 문제
조회수 2767회
문자열을 입력받아서 모든 공백문자를 삭제하는 함수를 strtok을 이용하여 만들고 싶은데 바로 종료가 됩니다.
입력: "ab cd ef"
원하는 출력: "abcdef"
실제 출력: "ab"
strtok을 써서 풀고 싶은데 어떻게 수정해야 하나요?
#include <stdio.h>
#include <string.h>
void Split(char *arr);
int main(void)
{
char a[20];
printf("문자열 입력");
scanf("%s", a);
Split(a);
return 0;
}
void Split(char *arr)
{
char *tk;
tk = strtok(arr, " ");
while(tk != NULL)
{
printf("%s", tk);
tk = strtok(NULL, " ");
}
}
1 답변
-
scanf 함수는 공백 문자가 들어오면, 입력이 종료되기 때문에 생기는 문제인 것 같습니다.
scanf를 gets_s() 함수로 바꾸어 실행하니 질문자님이 원하는 결과가 나오네요 :)
#include <stdio.h> #include <string.h> void Split(char *arr); int main(void) { char a[20]; printf("문자열 입력"); gets_s(a); // scanf 함수를 gets_s 함수로 변경 Split(a); return 0; } void Split(char *arr) { char *tk; tk = strtok(arr, " "); while (tk != NULL) { printf("%s", tk); tk = strtok(NULL, " "); } }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력