사용자 입력을 두 번 입력 한 다음 결과를 연결하는 프로그램을 작성하려고하는데 문제가 발생합니다.strcat가 원하는대로 작동하지 않습니다.
내 예상 출력은 다음과 같습니다
What would you like your message to be? input
message received: input
What would you like your message to be? words
message received: words
new message: inputwords
대신 내가 잘못된 응답을 수신하고 있습니다.
출력을 수신 :
What would you like your message to be? input
message received: input
What would you like your second message to be? words
message received: words
new message: ??s?inputwords
첫 번째 질문 :
가 어떻게 올바르게 두 문자열을 연결할 수 있습니까?
또한 :
나는이는 fgets 사이의 버퍼에 남아있는 요소를 삭제 가겠어요 어떻게 각 메시지에 대한 입력의 5 개 문자를 허용하고 있습니다 때문에은 "쓰레기"로 나머지를 읽지 않고 호출 정렬?
#include <stdio.h>
#include <string.h>
int main() {
char message[6];
char garbage[9999];
char message2[6];
printf("\nWhat would you like your message to be? ");
fgets(message, 6, stdin);
printf("message received: %s\n", message);
fgets(garbage, 9999, stdin); //this is gross
printf("\nWhat would you like your second message to be? ");
fgets(message2, 6, stdin);
printf("message received: %s\n", message2);
fgets(garbage, 9999, stdin); //still gross
char newString[25];
strcat(newString, message);
strcat(newString, message2);
printf("new message: %s\n", newString);
return 0;
}
참고 : 여기에
내가 사용하고 코드입니다 내가는 fgets의 반환 값을 잡기되어야한다는 것을 알고, 나는 간결이를 떠났다.
'strcat'는 한 문자열을 다른 문자열에 추가합니다. 하지만 인수를 위해 초기화되지 않은 버퍼로 호출했습니다. –