0

この関数は、ファイルのポインタとしてパラメータを取得し、すべてのファイルを構造体アナグラムに入れ、別のファイルに書き込むことになっています。現在、データには単語のみが含まれていますが、並べ替えも含まれていると思いますか? printf を使用して a.sorted を確認したところ、正しいデータが出力されましたが、データ ファイルに書き込まれないのはなぜですか? frwiteのカウントを増やしても、a.sortedを取得できません

#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <errno.h>
#include <ctype.h>
#include "anagrams.h"
#define SIZE 80


   //struct
struct anagram {
    char word[SIZE];
    char sorted[SIZE];
};


void buildDB ( const char *const dbFilename ){

FILE *dict, *anagramsFile;
struct anagram a;

//check if dict and anagram.data are open
errno=0;
dict= fopen(dbFilename, "r");

if(errno!=0) {
perror(dbFilename);
exit(1);
}

errno=0;

anagramsFile = fopen(anagramDB,"wb");

char word[SIZE];
char *pos;
int i=0;

while(fgets(word, SIZE, dict) !=NULL){

//get ripe of the '\n'
pos=strchr(word, '\n');
    *pos = '\0';

strncpy(a.word,word,sizeof(word));
//lowercase word
int j=0;
while (word[j])
  {
    tolower(word[j]);
    j++;
  }

/* sort array using qsort functions */ 
qsort(word,strlen(word), 1, charCompare);

strncpy(a.sorted,word,sizeof(word));
//printf(a);

fwrite(&a,1,strlen(word)+1,anagramsFile);

i++;
}
fclose(dict);
fclose(anagramsFile);

}

たとえば、「10th 01ht」データのようにソートされたデータが含まれているとします。ここに画像の説明を入力

4

1 に答える 1

0

fwrite(&a,1,strlen(word)+1,anagramsFile);fwrite(a.sorted,1,strlen(a.sorted)+1,anagramsFile);sorted の宣言を想定するべきだったchar sorted[SOME_LEN];

于 2012-11-21T06:46:57.893 に答える