1
我想创建一个拼写检查程序,它需要输入文件并通过搜索字典文件来确保每个单词都是正确的。我现在面临的问题是,当我尝试采取从输入文件,以空格分隔每个单词,并把它变成一个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.
注:'字符CH;'应该是'INT CH;'从其他字符''区分EOF' '。 – chux 2014-09-24 15:55:04
你使用某种文字处理器吗?别。使用程序员的编辑器。 – 2014-09-24 16:00:04