아이디어는 표준 입력에서 EOF에 도달 할 때까지 문자열을 읽는 것입니다 (이 형식은 "string - string"
). 그런 다음 문자열을 두 개의 문자열로 분리하고 두 번째 배열에 저장합니다. 배열은 처음에는 2 행 20 열로 동적으로 할당되지만 다음 문자열을 추가 할 때마다 2 행을 추가하고 싶습니다 (함수 expandmat()
). 내 코드는 다음과 같습니다.C 문자열을 2 차원 배열로 저장
char ** alloc(int rows, int collums) {
char ** mat;
int i;
mat = malloc(sizeof (char *) * rows);
for (i = 0; i < rows; i++) {
mat[i] = malloc(sizeof (char) * collums);
}
return mat;
}
char ** addtoarray(char ** mat, char * string1, char * string2, int position) {
sscanf(string1, "%s", mat[positon]);
sscanf(string2, "%s", mat[positon+1]);
return mat;
}
char ** getinput(char * longstring, char * string1, char * string2) {
int position = 0, n = 2, max = 30;
char ** mat;
mat = alloc(n, max);
while (fgets(longstring, max, stdin)) {
sscanf(longstring, "%s - %s", string1, string2);
addtoarray(mat, string1, string2, positon);
n += 2;
position += 2;
mat = expandmat(mat, n);
}
return mat;
}
또한이 코드에 뭔가 이해가되지 않는 부분이 있으면 해결 방법을 알려주시겠습니까?
나는 이것이 사소한 일처럼 보인다고 알고 있지만 그것은 나를 미치게 만들었다.
도움 주셔서 감사합니다.
실례를하지만,이 정확히 내가 자바와 같은 높은 수준의 자매 언어를 선호 또는 C# 일반 C. 이상이 너무 쉬운 이유입니다 HLLs로 작성하십시오. (라이브러리 덕분에.) –