배운걸로 함수 만들 때마다 너무 고생인거 같음ㅜㅜ 이거 왜 이런건가요?
#include<stdio.h>
#include<string.h>
#define str_len 100
void change(char*** str1, char *str2);
int main()
{
char str1[2][2][str_len] = { {"aaaa","bbbb"},{"cccc","dddd"} };
char str2[100] = "134";
change(str1, str2);
printf("%s ", str1[0][0]);
return 0;
}
void change(char*** str1, char* str2)
{
printf("%s", str1[0][0][str_len]);
/*
for (int i = 0; i < strlen(str2); i++)
{
str1[0][0][i] = str2[i];
}
*/
}
28개의 댓글
무분별한 사용은 차단될 수 있습니다.
신라면순한맛
printf("%s", str1[0][0][str_len]); <- 이부분이 문제
출력하려고 하는건 문자열이잖아 근데 str1[0][0][str_len]은 char지
printf("%s", str1[0][0]); 아마도 이걸 원했던것 같은데
문자열은 char *, 문자는 char타입이라는거 잘 생각하고 해봐
클로로프렌
아 저거 그냥 테스트 용으로 값보는거 함수 /*~*/가 진짜고 여기 안되서 테스트해서 값 보는 거임
클로로프렌
님이 말한데로 하면
예외가 발생했다고 위랑 동일한 경고 떠요
클로로프렌
#include
#include
#define str_len 100
void change(char str1[2][2][str_len], char str2[]);
int main()
{
char str1[2][2][str_len] = { {"aaaa","bbbb"},{"cccc","dddd"} };
char str2[100] = "14";
change(str1, str2);
for (int i = 0; i < 2; i++)
{
for (int s = 0; s < 2; s++)
printf("%s ", str1[i][s]);
printf("\n");
}
return 0;
}
void change(char str1[2][2][str_len], char str2[])
{
for (int i = 0; i < strlen(str2); i++)
{
for (int s = 0; s < 2; s++)
for (int p = 0; p < 2; p++)
str1[s][p][i] = str2[i];
}
}
이렇게 쓰면 되는데 참;;;; 배운거 응용하고 싶은데 너무 어려워요 ㅠㅠ
Tbps
요즘 자바랑 파이썬만 해서 잘 모르겠지만
C언어는 문자열타입이라는게 없어서 ""는 char*라는 별도의 타입으로 인식할거임...
그래서 문자열을 배열로 선언하려면 char* arr[] 같은 방식으로 해야함...
자세한건 배열 포인터랑 포인터 배열이란 개념이랑 http://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS9919998334 여기서 말하는거 정독해보는게 좋을듯
SoftVanilla
포인터만 달랑 던져주고 인덱스 계산을 시키면 안돼지
히오스브론즈5티어
*가 3개 이상이면 다른방법이 있나 찾아보자ㄷㄷ
JaGoon
배운거 맞음? 1달전인가 했던 질문이랑 다를게없는데 ?
클로로프렌
개인 공부임... 그래서 부족한 부분에서 막힘
JaGoon
개인 공부하는 거면 구글링 좀 하고 하면 안 됨?
클로로프렌
찾아봤는데 안되서 물어본거임 이거 3시간 넘께 함;;; 제 한계인걸 어떻게 해요;;;
JaGoon
당장 검색해도 금방 나오는데?
그냥 님이 노력 안 한 거임
클로로프렌
링크좀요...
클로로프렌
그 int (*arr)[] 이거임?
JaGoon
님 코드에서 가장 큰 문제점이 뭔지 모르시니.... ㅋㅋ
클로로프렌
힌트라도 주셈 ㅜㅠ 왜 이리 아리달송하게 하시는거... 힌트만 주면 찾아 볼께요...
몰라서 질문올리는건데
이건 책에서 못봄;;;
JaGoon
아니 님이 책에서 못 보는 거임
클로로프렌
하... 아 네
미제승냥이
c계열언어에서 *, []는 레퍼런스, &는 디레퍼런스라고 이해해
3단포인터로 선언해놓고 printf %s 포함해서 4단계까지 내려가려고하니까 오류난거임
니가 원하는건 아마 str1[0][0]이었을건데, 윗사람말대로 포인터가 3번까지는 나오게 만들지 말고 고민해보셈
미제승냥이
니가 모르는게 아니고?ㅋㅋ
답변하기싫으면 걍 가던가 왜 놀리기만하고 답도 안줌?
클로로프렌
아침부터 우울했는데 고마워여 ㅠㅠ...
근데 찾아보니깐 이 사람 저에게 답변 준 적이 없었음 ㅠㅠ
SoftVanilla
따봉 하나 드립니다. 저런 식의 댓글은 안봤으면 좋겠음
llIlIIIlIIlIIllIll
찐
SoftVanilla
너가 잘하는 친구인건 알겠는데 사람을 너무 놀린다
미제승냥이
추가로.. 문법 자체에 집착하기보다는 문제를 일반화하고 분석, 해결하는능력이 훨씬 중요함
문법은 진짜 별거 아니야
그러니까 잘 모르겠으면 일단 그런가보다하고 넘겨
클로로프렌
계속 찾아봤는데요 흠... 이거 맨 뒷장에 나오는 듯
제가 포인터 이해가 적어서 포인터 다시 듣고 있긴한데 책 목록 보고 내용 대충 읽어 보니깐
맨 뒤에 가면 있을 것 같음...
사실 저거 1페이지만 설명하고 나중에 어디 파트에서 추가로 설명한다고 했는데 흠...
일단 복습 보단 진도 부터 빼야 할 듯 ㄷㄷ
분석하는 능력은 어떻게 키유면 좋을까요? 실력 왕창 늘리고 싶은데(응용 하고 싶음) 아직 배우고만 있는게 고민이에요 ㅠㅠ...
미제승냥이
글쎄.. 내가 교육하는 입장은 아니라서 어떤방법이 제일 좋을지 함부로 조언하기엔 조심스러움
내가 어떻게 시작했냐면 첫 목표가 게임 만들기였고, 그 당시에 api에 대한 지식이 없으니 일단 콘솔로 해보자는게 목표였음
그 목표에 맞는 지식을 계속 찾아보면서 익혔고
근데 이게 맞는방법인진 모르겠다
클로로프렌
일단 책 진도 다 빼고 부족한 것은 나중에 천천히 채워야 할 거 같아요
ㄱㅅㄱㅅ