私は昨夜、この小さなコードをデバッグするのに過ごしました。私は2つのデータテキストファイルを持っていて、どちらも18000文字を含んでいます。 Idは、これらの18000を100個の文字の2つのサブストリングに分割して、180回の反復を行うのが好きです。部分文字列をCに渡す
最初の180回の反復では、両方のサブストリングのサイズは問題ありません。 18回の反復の後、サブストリングのサイズは0です。
両方のファイルが適切に開かれました。私はそれらを印刷することができます。私は考えることができるすべての可能な方法でサブ文字列を割り当てようとしましたが、これまでのところ解決策が見つかりませんでした。
int main(int argc, char const *argv[]) {
//Ive loaded two files into two strings buff1 and buff2 both size of 18000 chars
//It works fine with small data example, I dunno why but eventually I have work with much more bigger data set
//Id like to divide them into 100 char long pieces and do some stuff with that
char *substrA; //substring for buff1
char *substrB; //substring for buff2
substrA = malloc((wlen+1)*sizeof(char)); //word length wlen=100
substrA = malloc((wlen+1)*sizeof(char));
for (int i= 0; i <numOfSubProblems; ++i){ //numOfSubProblems = 18000/100
strncpy(substrA, buff1+i*wlen, wlen);
strncpy(substrB, buff2+i*wlen, wlen);
substrA[wlen] = '\0';
substrA[wlen] = '\0';
int lenA = strlen(substrA);
int lenB = strlen(substrB);
printf("STRA a STR B: %d %d \n",lenA,lenB);
DoSomething(substrA,substrB,i); //some parser and other functionality
}
return 0;
}
ここで 'subA'と' subB'は宣言されていますか? –
'malloc()' + 'strncpy()'の代わりに 'strndup()'を使うのはどうですか? – glauxosdever
それでは、何が問題なのですか? – LPs