그래서 나는 다차원 배열 형태로 저장된 스프레드 시트를 가지고 있으며 행의 내용을 인쇄하는 함수를 만들려고합니다. 불행히도 첫 번째 값만 인쇄하는 것처럼 보이고 나머지 인쇄물은 공백으로 표시됩니다. 이것에 대한 이유는 무엇일까요?다차원 배열 인쇄 첫 번째 열을 인쇄합니다
// Outputs the specified row of the spreadsheet.
// It is printed as one line on standard output.
void SS_PrintRow(SPREADSHEET *ss, int rowNum) {
if (debug)
fprintf(stderr, "DEBUG: Call to SS_PrintRow(--,%d)\n", rowNum);
// TO BE COMPLETED!
if(rowNum >= MAXROWS || rowNum < 0){
printf("-- row number outside range\n");
return;
}
SPREADSHEET read;
memcpy(&read,ss,sizeof(*ss));
int i;
for(i = 0; i < MAXCOLS ;i++){
read.contents[rowNum][i][MAXLEN] = '\0'; // force null termination
printf("%s ",read.contents[rowNum][i]);
}
return;
}
행 값 :
Jane,24,122.3,brunette
출력 :
Jane
EDIT : 여기서 스프레드 시트 구조체이다.
struct SpreadSheet {
char *fileName;
int numRows;
int numCols;
char contents[MAXROWS][MAXCOLS][MAXLEN];
};
typedef struct SpreadSheet SPREADSHEET;
1) '스프레드 시트'의 완전한 정의를 게시하면 도움이됩니다. 2)주의 :'memcpy (& read, ss, sizeof (* ss));'는'read = * ss;'처럼 깨끗합니다. – chux
SPREADSHEET의 정의가 추가되었습니다. 또한, memcpy는 당신이 말한 것처럼 형식화되어 있습니다, 그렇지 않습니까? – user3283585
게시물에 대한 답변을 작성해 주셔서 감사합니다. 내 의견에 관해서는'memcpy()'가 아니라'read = * ss;'를 사용하는 것이 좋습니다. – chux