構造体配列に問題があります。テキスト ファイルを 1 行ずつ読み込み、値を並べて比較する必要があります。たとえば、"Mama" は、mama- があるため、2 ma , 1 am を返します。私は構造体を持っています:
typedef struct{
char first, second;
int count;
} pair;
文字列全体の構造体の配列を作成し、それらの構造体を比較する必要があります。また、メモリ割り当てについても紹介したので、任意のサイズのファイルに対して行う必要があります。ここで本当に問題が発生します。構造体の配列に適切にメモリを再割り当てするにはどうすればよいですか? これは今のところ私のメインです(コンパイルされず、明らかにこれに問題があるエラーがあります)。
int main(int argc, char *argv[]){
//allocate memory for struct
pair *p = (pair*) malloc(sizeof(pair));
//if memory allocated
if(p != NULL){
//Attempt to open io files
for(int i = 1; i<= argc; i++){
FILE * fileIn = fopen(argv[i],"r");
if(fileIn != NULL){
//Read in file to string
char lineString[137];
while(fgets(lineString,137,fileIn) != NULL){
//Need to reallocate here, sizeof returning error on following line
//having trouble seeing how much memory I need
pair *realloc(pair *p, sizeof(pair)+strlen(linestring));
int structPos = 0;
for(i = 0; i<strlen(lineString)-1; i++){
for(int j = 1; j<strlen(lineSTring);j++){
p[structPos]->first = lineString[i];
p[structPos]->last = lineString[j];
structPos++;
}
}
}
}
}
}
else{
printf("pair pointer length is null\n");
}
}
これにより良い方法があれば、私は明らかに物事を変えて喜んでいます。上記の構造体を使用する必要があり、構造体の配列が必要であり、メモリ割り当てを操作する必要があります。それらが唯一の制限です。