백준2675번
문자열 반복
이 문제를 풀면서 알게된 점
sizeof()-실제로 차지하고 있는 메모리 크기,NULL문자 포함
strlen()-문자열의 길이
unsigned int(부호 없는 정수)-양(+),0,음(-)
signed int(부호 있는 정수)-양(+),0
Main.cc: In function ‘int main()’:
Main.cc:15:35: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
15 | for (int j = 0; j <strlen(S); j++)
| ~~^~~~~~~~~~
처음 제출 시 맞았습니다 판정을 받았지만 경고문이 뜸
문제점:int는 기본적으로 부호있는 정수, strlen()은 부호 없는 정수이기 때문에 둘을 비교할 때 오류가 생김
해결방법: unsigned int 앞에 (int)를 붙여 부호 있는 정수로 만들어 준다.
strlen() -> (int)strlen()
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int T; // 테스트 케이스의 개수
cin >> T;
char S[1000]; // 문자열
int R; // 반복 횟수
for (int i = 0; i < T; i++)
{
cin >> R >> S;
for (int j = 0; j <(int)strlen(S); j++) // 문자열의 길이를 알기 위해 strlen()함수 사용
{
for (int k = 0; k < R; k++)
{
cout << S[j];
}
}
cout << "\n";
}
return 0;
}