Я пытаюсь создать программу проверки орфографии, которая берет входной файл и гарантирует правильность каждого слова путем поиска через файл словаря. Проблема я столкнулся в том, что, когда я пытаюсь взять каждое слово разделенного пробелов из входного файла и поместить его в char []
слово с "
по какой-то причине печатичтение некоторых символов с помощью fgetc
H0
i1
c0
h1
r2
i3
s4
!5
â0
1
2
h3
o4
w5
w6
â7
8
9
a0
r1
42
e3
y0
o1
u2
.3
целых мой индекс
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "dict.h"
int main(int argc, char *argv[]) {
FILE *fdict,*input;
int i;
char ch;
/* the biggest posible word is 30 plus a possible of two " or ' characters and the null character. so the limit of the array is 33*/
char norm[33];
if (argc < 3) /* argc should be 3 for correct execution*/
{
fprintf(stderr,"1 or 2 Files were missing.");
exit(1);
}
if (argc > 3){
fprintf(stderr,"too many Arguments");
exit(1);
}
/* We assume argv[1] and agrv[2] are filenames to open*/
fdict = fopen(argv[1], "r");/* file pointer for the dictionary file*/
input = fopen(argv[2], "r");/*file pointer for the input file*/
/* fopen returns NULL on failure */
if (fdict == NULL){
fprintf(stderr,"Could not open file: %s\n", argv[1]);/*checks to make sure the dictionary file can be opened*/
exit(1);
}
if (input == NULL){
fprintf(stderr,"Could not open file: %s\n", argv[2]);/*checks to make sure the input file can be opened*/
exit(1);
}
/* Read one character at a time from file, stopping at EOF, which
indicates the end of the file. Note that the idiom of "assign
to a variable, check the value" used below works because
the assignment statement evaluates to the value assigned. */
while ((ch = fgetc(input)) != EOF) {
char word[33] = "";/* resets the array*/
for (i = 0; !isspace(ch) ; i++){
word[i] = ch;
printf("%c%d\n",ch,i);/* checking to see what is wrong with the index*/
ch = fgetc(input);
}
}
fclose(fdict);
fclose(input);
return 0;
}
мой вход выглядит следующим образом:
Hi chris! “howw” are you.
Примечание: 'char ch;' должен быть 'int ch'', чтобы отличать' EOF' от другого 'char '. – chux
Вы используете какой-то текстовый процессор? Не. Используйте редактор программиста. –