ファイルを読み取ろうとしています。ファイルから各行を読み込み、その行にスペルミスがないかどうか確認したい。Char Arrayを空にしてCでそれを再利用するには?
私は、ファイルからのデータが新しい行の文字化け語句'\n'
を得るまで、バッファに格納されるという条件を追加しました。そしてこの行を取得した後、私はバッファを空にしてその中に値を挿入し直したい。次のように私は同じのために使用しています
コードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define W_COUNT 23800
#define MAX_LEN 100
char *dict[W_COUNT];
char buffer[MAX_LEN];
int num_words; //No of Words
char *statement[W_COUNT];
char buffer1[MAX_LEN];
void read_dictionary();
void file_read(char *);
void spell_check();
int word_search(char*);
int main(int argc, char*argv[]){
int i;
if(argc < 2){
printf("Expected Filename.\n");
exit(0);
}
read_dictionary();
file_read(argv[1]);
// spell_check();
}
void read_dictionary(){
FILE *fd;
int i = 0;
fd = fopen("dictionary", "r");
while (fscanf(fd,"%s",buffer) != EOF)
dict[i++] = strdup(buffer);
num_words = i;
fclose(fd);
}
void file_read(char *filename){
FILE *fd;
int i = 0;
char c;
fd = fopen(filename,"r");
/*while (fscanf(fd,"%s",buffer1) != EOF)
{
word[i++] = strdup(buffer1);
printf("File : %s\n", buffer1);
}*/
while ((c = fgetc(fd)) != EOF)
{
buffer1[i++] = tolower(c);
if (c == '\n')
{
//printf("New Line\n");
spell_check();
buffer1[i] = 0;
}
//buffer1[i] = 0;
}
printf("Statement : %s\n", buffer1);
fclose(fd);
}
void spell_check(){
char *str;
str = strtok(buffer1," .?,!-");
while(str != NULL){
if(!word_search(str))
printf("%s Not found.\n",str);
str = strtok(0," .?,!-");
}
}
int word_search(char *word){
int high, low, mid;
high = num_words - 1;
low = 0;
int found = 0;
while (found == 0){
mid = (low + high)/2;
if(strcmp(word, dict[mid]) == 0)
return 1;
else if(strcmp(word,dict[mid]) < 0)
high = mid - 1;
else
low = mid + 1;
if (low > high)
return 0;
}
}
任意の提案が理解されるであろう。 ありがとうございます。
バッファの先頭にヌル文字を割り当てることができます。 –
私は試しましたが、動作しません。最初の行だけをループします。 –
ここで、コーディングでヌル文字をどこに割り当てるか? –