728x90
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
int a, b, forth, back, cnt;
srand((unsigned int)time(NULL));
a = (rand() % 100) + 1;
b = (rand() % 100) + 1;
while (a > b) {
a = (rand() % 100) + 1;
}
//char arr[b];
char * arr = new char[b];
for (int i = 0; i <= b; i++) {
arr[i] = "o";
}
}
c++ 언어 공부를 하면서 이것저것 작성하던 중에..
char arr[b];가 안된다는 것을 알게 되었습니다.
이유는
배열의 크기를 지정하면서 선언하는 것을 정적 할당이라고 합니다..
정확한 크기를 명시를 해줘야 하는데 b라는 문자가 들어와 있으니 안 되는 것이었습니다..
제가 원하는 것처럼 사용하고 싶으면 동적 할당으로 선언해야 합니다.
char *arr = new char[b];
이렇게 하면 크기를 정확히 모를 때에도 배열을 선언할 수 있게 됩니다.
저 같은 경우엔 b값을 랜덤 생성했지만 b가 배열을 선언하는데 적용이 안돼서 동적 할당을 사용했습니다..
뭐.. 그렇게 배열을 선언하고 반복문으로 문자를 집어넣으려 했습니다.
그런데
오류 코드 C2440가 나타났고 처음엔 뭔지 몰랐습니다.
왜???
생각을 해보니 " "와 ' '엔 큰 차이가 있습니다.
" "는 문자열을 표현하는 데 쓰는거고, ''는 문자를 표현하는데 사용하는데 차이가 있습니다.
예를 들어
'A'는 문자 그대로 'A'이지만
"A"에는 'A'와 문자열의 끝을 알려주는 '\0'가 포함되어있어
char 배열에 들어가지 않았던 것이었습니다..
그래서 코드를 좀 수정해보면
아래와 같습니다.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
int a, b;
srand((unsigned int)time(NULL));
a = (rand() % 100) + 1;
b = (rand() % 100) + 1;
while (a > b) {
a = (rand() % 100) + 1;
}
//char arr[b];
char * arr = new char[b];
for (int i = 0; i <= b; i++) {
arr[i] = 'o';
}
arr[a] = 'i';
for (int j = 0; j <= b; j++) {
cout << arr[j];
}
}
별건 없고 출력할 때마다 'o'문자들 사이에 'i'문자를 넣어보고 싶었습니다.
응용하자면 수많은 B사이에서 P를 찾는 미니게임도 만들 수 있겠네요.
728x90