【发布时间】:2015-03-10 09:58:12
【问题描述】:
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++;
}
我正在尝试将一维字符串数组转换为二维。我对自己的错误一无所知。谢谢你的解决方案。
调试器结果:
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
【问题讨论】:
-
sizeof(char*)*sizeof(countNewLine)..看起来很可疑。 -
标准警告:请do not cast
malloc()和family的返回值。 -
循环永远不会以
buffer[rowTrack] != '\n' || buffer[rowTrack] != '\0';终止,它应该使用&&,而且您还没有为*transfer[]的每一行分配内存。 -
@WeatherVane Desktop/test/test/test/main.c:14:13:定义数组类型的变量需要明确的大小或
char *transfer[]的初始化器 -
所以,要明确一点,您想用换行符拆分字符串吗?