strcat함수
, 송 준현님이 작성strcat함수를 이용해서 s1의 0~4번째 알파벳을 s2에 넣기 위해 아래와 같이 코드를 작성해 보았는데 무엇이 오류인지 모르겠습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
int main()
{
char s1[30];
char s2[30];
scanf("%s", s1);
for (int i = 0; i < 5; i++)
{
strcat(s2, s1[i]);
}
printf("%s\n", s2);
return 0;
}
회신: strcat함수
, 도장_ 관리자님이 작성1>c:\users\gilbut_it\source\repos\project2\project2\소스.c(16): warning C4047: '함수': 'const char *'의 간접 참조 수준이 'char'과(와) 다릅니다.
1>c:\users\gilbut_it\source\repos\project2\project2\소스.c(16): warning C4024: 'strcat': 형식 및 실제 매개 변수 2의 형식이 서로 다릅니다.
Visual Studio에서 빌드했을 때 성공했다고 해도 하단의 출력창을 보면 경고가 표시됩니다.
경고는 에러로 생각해야 합니다.
'strcat': 형식 및 실제 매개 변수 2의 형식이 서로 다릅니다.strcat은 인수 2개가 모두 주솟값이어야 합니다. 주솟값이므로 문자 배열이거나 문자 포인터여야 합니다.
s1[i]는 실제로 해당 원소이므로 값이 됩니다. 값은 주소가 아닙니다.
hello를 입력했을 때 s1[0]은 'h'라는 문자이고, 이는 값입니다.
Unit 42.2를 참고하세요.
초기화하지 않은 변수나 배열은 초기화 후에 사용해야 합니다.