char *buffer; /* holds the file contents. */
char **transfer;
unsigned long countNewLine = 0;
size_t rowTrack;
size_t columnTrack;
// assume countNewLine is 12
buffer_size = BUFSIZ;
buffer = malloc(buffer_size);
transfer = (char**)malloc(sizeof(char*)*sizeof(countNewLine));
columnTrack = 0;
while (columnTrack < countNewLine) {
for (rowTrack = 0; buffer[rowTrack] != '\n' || buffer[rowTrack] != '\0'; rowTrack++)
transfer[columnTrack][rowTrack] = buffer[rowTrack];
columnTrack++;
}
Я пытаюсь преобразовать 1D строковый массив в 2D. Я не имею ни малейшего представления о моей ошибке. Спасибо за решение.Преобразование одномерного массива строк в двумерный массив строк в c
Debugger результат:
buffer char * "first\nsecond\nthird\nfourth\nfifth\nsixth\nseventh\n
eighth\nninth\ntenth\neleventh\ntwelfth\nthirteenth" 0x0000000100801200
*buffer char 'f' 'f'
countNewLine unsigned long 12 12
transfer char ** 0x100105520 0x0000000100105520
*transfer char * NULL 0x0000000000000000
rowTrack size_t 0 0
columnTrack size_t 0 0
'размерof (char *) * размерof (счетNewLine)' ..looks подозрительный. –
Стандартное предупреждение: Пожалуйста, [не использовать] (http://stackoverflow.com/q/605845/2173917) возвращаемое значение 'malloc()' и family. –
Цикл никогда не завершится с помощью 'buffer [rowTrack]! = '\ N' || buffer [rowTrack]! = '\ 0'; 'он должен использовать' && ', а также вы не выделили память для каждой строки' * transfer [] '. –