#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#define SIZE_arr 20
#define SIZE_str 10
void New_Start(char arr[SIZE_str][SIZE_arr][SIZE_arr]);
void ARR_OUT(char arr[SIZE_str][SIZE_arr][SIZE_arr]);
void goal_location(char arr[SIZE_str][SIZE_arr][SIZE_arr]);
void first_location(char arr[SIZE_str][SIZE_arr][SIZE_arr]);
int main()
{
char Foundation_arr[SIZE_str][SIZE_arr][SIZE_arr];
New_Start(Foundation_arr);
first_location(Foundation_arr);
goal_location(Foundation_arr);
//ARR_OUT(Foundation_arr);
return 0;
}
void New_Start(char arr[SIZE_str][SIZE_arr][SIZE_arr])// 초기 배열 설정
{
char tag[] = "00";
for (int i = 0; i < SIZE_arr; i++)
{
for (int s = 0; s < SIZE_arr; s++)
{
strcpy(arr[i][s],tag);
}
}
for (int i = 0; i < SIZE_arr; i++)
{
for (int s = 0; s < SIZE_arr; s++)
printf("%s", arr[i][s]);
printf("\n");
}
}
void ARR_OUT(char arr[SIZE_str][SIZE_arr][SIZE_arr])// 2중 배열 출력
{
for (int i = 0; i < SIZE_arr; i++)
{
for (int s = 0; s < SIZE_arr; s++)
printf("%s", arr[i][s]);
printf("\n");
}
}
void goal_location(char arr[SIZE_str][SIZE_arr][SIZE_arr])// 목표물 출력 a to b
{
srand(time(NULL));
int x = rand() % SIZE_arr; //0~40
int y = rand() % SIZE_arr;
char p[] = "B";
for (int i = 0; i < strlen(p); i++)
arr[i][x][y] = p[i];
}
void first_location(char arr[SIZE_str][SIZE_arr][SIZE_arr])
{
int x = SIZE_arr / 2;
int y = SIZE_arr / 2;
char p[] = "A";
for(int i=0;i<strlen(p);i++)
arr[i][x][y]=p[i];
}
모든 코딩이구요
void New_Start(char arr[SIZE_str][SIZE_arr][SIZE_arr])// 초기 배열 설정
{
char tag[] = "00";
for (int i = 0; i < SIZE_arr; i++)
{
for (int s = 0; s < SIZE_arr; s++)
{
strcpy(arr[i][s],tag);
}
}
for (int i = 0; i < SIZE_arr; i++)
{
for (int s = 0; s < SIZE_arr; s++)
printf("%s", arr[i][s]);
printf("\n");
}
}
에서 2차원 문자열에서 이상한 한자 나오는데 무엇이 잘못된 걸까요?
-----------------------------------------------------------------------------
<해결>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#define SIZE_arr 20
#define SIZE_str 100
void New_Start(char arr[SIZE_arr][SIZE_arr][SIZE_str]);
void ARR_OUT(char arr[SIZE_arr][SIZE_arr][SIZE_str]);
void goal_location(char arr[SIZE_arr][SIZE_arr][SIZE_str]);
void first_location(char arr[SIZE_arr][SIZE_arr][SIZE_str]);
int main()
{
char Foundation_arr[SIZE_str][SIZE_str][SIZE_str] = { " " };
New_Start(Foundation_arr);
first_location(Foundation_arr);
goal_location(Foundation_arr);
ARR_OUT(Foundation_arr);
return 0;
}
void New_Start(char arr[SIZE_arr][SIZE_arr][SIZE_str])// 초기 배열 설정
{
char tag[] = "00";
for (int i = 0; i < SIZE_arr; i++)
{
for (int s = 0; s < SIZE_arr; s++)
{
for (int p = 0; p < (strlen(tag)); p++)
{
arr[i][s][p] = tag[p];
}
}
}
}
void ARR_OUT(char arr[SIZE_arr][SIZE_arr][SIZE_str])// 2중 배열 출력
{
for (int i = 0; i < SIZE_arr; i++)
{
for (int s = 0; s < SIZE_arr; s++)
printf("%3s", arr[i][s]);
printf("\n");
}
}
void goal_location(char arr[SIZE_arr][SIZE_arr][SIZE_str])// 목표물 출력 a to b
{
srand(time(NULL));
int x = rand() % SIZE_arr; //0~40
int y = rand() % SIZE_arr;
char tag[] = "BB";
for (int p = 0; p < strlen(tag); p++)
arr[x][y][p] = tag[p];
}
void first_location(char arr[SIZE_arr][SIZE_arr][SIZE_str])
{
int x = SIZE_arr / 2;
int y = SIZE_arr / 2;
char tag[] = "AA";
for (int p = 0; p < strlen(tag); p++)
arr[x][y][p]=tag[p];
}
esibel
걍 인덱스 오류같은데
void New_Start(char arr[SIZE_str][SIZE_arr][SIZE_arr])
인데 루프는 arr 만 두개임
일뽕사냥꾼
스트링카피자나
esibel
아 씨는 상관없이 되던가?
클로로프렌
void New_Start(char arr[SIZE_arr][SIZE_arr][SIZE_str])이었음ㅋㅋㅋ
아 까먹서 필기한거 봤는데
[행 크기][열 크기][문자열 길이]인데 [문자열 길이][행 크기][열 크기]이거 이었음 ㄹㅇ
ㅈㅅㅈㅅ 제가 빡대가리 이었음ㅋㅋㅋ
일뽕사냥꾼
스트링카피는 널문자 자동 입력 됨?
클로로프렌
void New_Start(char arr[SIZE_arr][SIZE_arr][SIZE_str])이었음ㅋㅋㅋ
[행 크기][열 크기][문자열 길이]인데 [문자열 길이][행 크기][열 크기]이거 이었음 ㄹㅇ
수정하니깐 ㅈㄴ 잘나옴 ㅋㅋㅋ