한문제만 도와주십쇼 ㅠㅠㅠ
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
void flush_input_buffer(void)
{
while (getchar() != '\n');
}
int main(void)
{
char first_name[20];
char last_name[20];
char full_name[40];
printf("Enter your first name: ");
fgets(first_name, sizeof(first_name), stdin);
void flush_input_buffer(void);
printf("Enter your last name: ");
fgets(last_name, sizeof(last_name), stdin);
void flush_input_buffer(void);
strcat(first_name, last_name);
strcpy(full_name, first_name);
printf("Your full name is %s\n", full_name);
return 0;
}
제가 짠 코드인데요.. 여기서 아무리 긴 이름을 입력해도 오류 없이
Enter your first name: Meg ( Meg 입력)
Enter your last name: Ryan ( Ryan 입력)
Your full name is Meg Ryan. (입력없이 출력)
이렇게 어떻게 만드나요ㅠ..
제가한거는
Enter your first name: Meg ( Meg 입력)
Enter your last name: Ryan ( Ryan 입력)
Your full name is Meg
Ryan. 이렇게 나오고
20글자 넘게치니까 무조건 오류가나오는데..ㅠ
아무리 자세한 질문글이라도Quote:코드 입력 또는
아무리 자세한 질문글이라도
이걸 무시하면 글을 읽기 힘든 것은 사실입니다. include 날아간 거 안 보이시나요?
fgets()로 받은 문자열 끝에 개행 문자가 들어 있다면 저렇게 됩니다. 그걸 찾아서 없애는 방법은 연습 문제로 남겨 두겠습니다. 아울러 strcat, strcpy 함수 대신 strncat, strncpy를 사용하는 것이 더 좋을 것 같습니다.
저기에 20이라는 숫자가 괜히 있는 게 아닙니다. 글자 길이 제한을 더 높이고 싶다면 20을 그냥 더 큰 숫자로 바꾸거나 malloc을 사용한 동적 할당에 대해서 알아 보세요.
void flush_input_buffer(void);
main 함수에 이건 무엇을 의도하고 쓴 문장인가요?
다시해서
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
int main()
{
char first_name[20];
char last_name[20];
char full_name[40];
printf("Enter your first name: ");
fgets(first_name, sizeof(first_name), stdin);
first_name[strlen(first_name) - 1] = 0;
printf("Enter your last name: ");
fgets(last_name, sizeof(last_name), stdin);
last_name[strlen(last_name) - 1] = 0;
strcpy(full_name, first_name);
strcat(full_name, " ");
strcat(full_name, last_name);
printf("Your full name is %s\n", full_name);
return 0;
}
이렇게 해봤는데 여기서 strncat, strncpy 은 처음보는데 어떤식으로 가야하나요 글자 수를 조정하는거 같긴한데..
레퍼런스를 애용합시다.
레퍼런스를 애용합시다.
https://en.cppreference.com/w/c/string/byte/strncat
https://en.cppreference.com/w/c/string/byte/strncpy
QnA에 질문올려놓고 무한정 기다리는 것보다 매우 빠르게 답을 얻을 수 있습니다.
댓글 달기