簡體   English   中英

如何在忽略空格和其他特殊字符的情況下僅讀取 txt 文件中的字母字符?

[英]How to read only alphabetical characters from a txt file while ignoring white spaces and other special characters?

我使用指針打開一個由幾個段落組成的.txt文件。 我使用 for 循環將.txt文件存儲到char word[i]數組中,然后將其printf出來。

除了我不想存儲空格和特殊字符外,一切都運行良好。 我只想將 ABCD......Z 等字母字符存儲到我的char word[i]數組中。

我知道我必須將if函數放入 for 循環中,但我不知道確切的語法。 請幫忙。

這是我的代碼的 for 循環:

 for (i=0; i<1730; i++ )
   {
       fscanf(fptr,"%c", &word[i]);
       printf("%c", word[i]);
   };
#include <stdio.h>
#include <string.h>
int main() 
{
    FILE *fptr;
    char chr;
    char *file_name="IdentifiedParts.txt";
    fptr = fopen(file_name, "r");
    while ( (fscanf(fptr,"%c",&chr)) != EOF ) {
           //ASCII values : 65-90 => A-Z ,  97-122 => a-z
        if( (chr >= 97 && chr <= 122 ) || (chr >= 65 && chr <= 90 ) ) {
             printf("%c", chr);
        }
    }
    fclose(fptr);
    return 0;
}

      OR 

   while ( (fscanf(fptr,"%c",&chr)) != EOF ) {
          if(isalpha(chr)) {
            printf("%c", chr);
          }
    }

像這樣:

#include <stdio.h>
#include <ctype.h>

int main(void){
    char word[1730];
    FILE* fptr = fopen("input.c", "r");
    int i, ch;

    for (i = 0; i<1730 && (ch = fgetc(fptr)) != EOF; i++ ){
        if(isalpha(ch))
            printf("%c", word[i]=ch);
    }
    fclose(fptr);
    return 0;
}

#include <stdio.h>

int main(void){
    char word[1730];
    FILE* fptr = fopen("input.txt", "r");

    while(!feof(fptr)){
        while(1 == fscanf(fptr, "%1729[A-Za-z]", word)){
            printf("%s", word);
        }
        fscanf(fptr, "%*[^A-Za-z]");
    }

    fclose(fptr);
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM