如何只读取txt文件中的字母字符而忽略空格和其他特殊字符?

时间:2016-09-29 04:30:25

标签: c character whitespace space

我使用指针打开一个由几段组成的.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]);
   };

2 个答案:

答案 0 :(得分:0)

#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);
          }
    }

答案 1 :(得分:-1)

类似的东西:

#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;
}