我想從文本文件(在命令行中指定爲參數的名稱)的某些詞語(在此示例中爲前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]);
,它將整個句子作爲單詞。
我怎樣才能改變它,使正確的輸出?
您指定的掃描集接受小寫字母,大寫字母,空格和管道符號。不要包括空白,特別是;你並不是真的想要這個管道,儘管它會損失很少。不要忘記,你必須使用別的東西來讀取終止掃描集的字符。 –