我想从文本文件(在命令行中指定为参数的名称)的某些词语(在此示例中为前20)中读取它。由于下面的代码运行,我发现它也带有带有字符的标点符号。fscanf()仅读入没有标点符号的字符
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char * argv[]){
int wordCap = 20;
int wordc = 0;
char** ptr = (char **) calloc (wordCap, sizeof(char*));
FILE *myFile = fopen (argv[1], "r");
if (!myFile) return 1;
rewind(myFile);
for (wordc = 0; wordc < wordCap; wordc++){
ptr[wordc] = (char *)malloc(30 * sizeof(char));
fscanf(myFile, "%s", ptr[wordc]);
int length = strlen(ptr[wordc]);
ptr[wordc][length] = '\0';
printf("word[%d] is %s\n", wordc, ptr[wordc]);
}
return 0;
}
当我穿过了一句:“有一次,当狮子睡着了一点点鼠标就开始和看不起他跑起来;”,“他”将用分号接踵而至。
我将fscanf()
更改为fscanf(myFile, "[a-z | A-Z]", ptr[wordc]);
,它将整个句子作为单词。
我怎样才能改变它,使正确的输出?
您指定的扫描集接受小写字母,大写字母,空格和管道符号。不要包括空白,特别是;你并不是真的想要这个管道,尽管它会损失很少。不要忘记,你必须使用别的东西来读取终止扫描集的字符。 –