int n = 0;
char* sep(char * a) {
int i = 0;
while (a[i]==',') {
i++;
}
char * q = new char[i];
for (int k = 0; k < i; k++) {
q[k] = a[k];
}
n = i;
cout << n << endl;
return q;
}
char* sep2(char * a,int s) {
int t = s;
char * w = new char[100];
while (a[s] == ',') {
s++;
}
for (int k = 0; k < s-t; k++) {
w[k] = a[k+t];
}
n = s;
return w;
}
int main(void)
{
char str[100];
char t[100];
char c[100];
char l[100];
FILE * f = fopen("data.txt", "rt");
fgets(str, sizeof(str), f);
char name[100];
char * ex = sep(str);
strcpy(name,ex);
char * ex2 = sep2(str,n);
strcpy(t, ex2);
char * ex3 = sep2(str,n);
strcpy(c, ex3);
printf("%s", name);
printf("%s", t);
printf("%s", c);
printf("%s", l);
이거그냥 문자열을 , 가지고 각각분리하는건데 뭐가문제지 몇시간동안하는중인데 씨발 빡대가리라 못해먹겠다
c잘아는사람 적어놓고 cpp 문법이 보이노 - dc Cpp
그냥 new만쓴거야..
대충 넌 코드 여러번 돌려봤겠지만 남들은 ide 켜기도 귀찮고 한데 결과가 어떻게 나오는걸 바랐지만 실제론 어떻게 나왔다 같은걸 설명해주는게 답변받을 확률이 높지않을까^^,, 변수명도 너만 알아보기 쉬울거같아요 - dc Cpp
일단 저대로 실행하면 'str'이 corrupted 됬다뜨고 에러뜨고 cmd에선 맨위에 0이렇게 떠 이것도 이상한게 n=0이라는소린데 n=0일리가없는데 n에다가 i를 대입했는데 이게 무슨뜻일까??
n에다가 i를대입했는데 맨위에 n을출력했는데 0이나옴 왜이럴까
한줄씩 디버깅은 해보고 물어본거냐고 오이ㅋㅋ - dc Cpp
c언어 마이너 갤러리로 - dc App
변수명 함수명 길어도 좋으니까 항상 누가봐도 의미를 알 수 있게 적어라
그리고 이게 안 되는 이유는 char * 자료형인데 문자열 쪼갤때마다 끝에 널 터미네이트 안 해줘서 그럼
아 그러면 이것보다 더 복잡해져야겠네
코드 좀 넣었더니 디씨가 댓글 날려버리네... 기본적으로 index 선언 및 초기화한 상태에서 문자열 끝날때까지 while문 돌면서 strdup 해주고 조건 맞춰서 if문으로 루프빠져나올 수 있게 한다음 끝난 지점의 인덱스를 받아서 널 터미네이트 해줘야함
자르고 남은 문자열은 포인터 연산을 해서 시작점을 찍어주던지, 인덱스를 보내줘서 다른 함수의 매개변수로 활용하게 한다던지 할 수 있겠지
좀 더 기본적인 것부터 다시해야할듯...
님은 만약 이렇게 구현하라하면 구현할수있음? 내가지금 잘못접근하고있는거지?
ㅇㅇ 많이해봤고 기본적으로 알아야할 부분이 많이 빠져있음
저 코드에 좀 위험한 부분이 있음. '\' 까지만 ++ 연산 시켜야 됨. if (c == '\0') break; 이런 문 꼭 넣으셈
char *p = str;
strndup (str, p - str); 이런 식으로 해보셈.
if 로 *p 0 , 같은지 체크해주고 p++
0 이면 break
str 에 a,b0 이렇게 있다고 치고 strlen 결과가 2 이고 메모리는 3칸 잡아먹고 char 은 1바이트
p = str; *p 은 a, p++ 후에 *p 는 , 이렇게 됨. strndup (str, p - str) 하면 "a" 를 리턴할 거임.
두번째 부분은.. p++, offset = p, strndup (str +offset, p - offset) 이런 식이겠지?