文字列配列があり、文字列を配列にコピーしたい。プログラムが動作を停止するまでは動作しますが、文字列のコピーに問題があることはわかっています。行をコピーしてコメントすると、プログラムは正常に動作するためです。これが私のコードです:
FILE *fsource = fopen(source, "rb");
char fname[256], **files, mybuf[BUFSIZ];
files = allocate2d(files, count_files);
clear(fname);
reading = fread(mybuf, 1, BUFSIZ, fsource);
while(reading)
{
for(i = 0; i < reading; i++)
{
if(mybuf[i] == 20)
{
while(1)
{
if(i < reading)
{
if(mybuf[i] == 0)
{
clear(files[ifiles]);
strcat(files[ifiles++], fname); // here is problem :(
//append_string(files[ifiles++], fname); // also doesn't work
clear(fname);
break;
}
append_char(fname, mybuf[i++]);
}
else
{
break;
}
}
}
clear(fname);
}
reading = fread(mybuf, 1, BUFSIZ, fsource);
}
char** allocate2d(char **arr, unsigned int size)
{
unsigned int i = 0;
arr = malloc(size * sizeof(char));
for(i = 0; i < size; i++)
{
arr[i] = malloc(256);
}
return arr;
}