如何将文件从文件写入C中的字符串

时间:2014-12-11 18:27:56

标签: c arrays string text

我想写代码的用户被要求写一个文件的名称。然后我想分析文件的符号内容,让我们说'e'

我的问题是我不知道如何以正确的方式开始分析文件,以便检查内容。

int main() {
    char c[1000], file_name[1000];
    int i;
    int s = 0;
    FILE *fp;

    printf("Enter the name of file you wish to see\n");
    gets(file_name);

    if ((fp = fopen(file_name, "r")) == NULL){
        printf("Error! opening file");
        exit(1);

    }

    if (fp) {
        while (fscanf(fp, "%s", c) != EOF) {
            printf("%s", c);
        }

        fclose(fp);

        for (i = 0; c[i] != '\0'; ++i) {
            puts(c);
            if (c[i] == 'e') {
                ++s;
            }
        }

        printf("\nWhite spaces: %d", s);
        _getche();
        return 0;
    }
}

2 个答案:

答案 0 :(得分:2)

char line[512]; /*To fetch a line from file maximum of 512 char*/
rewind(fp);
memset(line,0,sizeof(line)); /*Initialize to NULL*/
while ( fgets(line, 512, fp ) && fp !=EOF)
{

/*Suppose u want to analyze string "WELL_DONE" in this fetched line.*/

  if(strstr(line,"WELL_DONE")!=NULL)
  {
    printf("\nFOUND KEYWOD!!\n");
  }
  memset(line,0,sizeof(line)); /*Initialize to null to fetch again*/
}

答案 1 :(得分:1)

如果它只是您正在寻找的符号,或者 char ,您只需使用getc():

int c;
....
if (fp) {
    while ((c = getc(fp)) != EOF) {
        if (c == 'e') {
            // Do what you need
        }
    }

或者,如果它是您正在寻找的单词,fscanf()将完成这项工作:

int c;
char symb[100];
char symbToFind[] = "watever";  // This is the word you're looking for
....
while ((c = fscanf(fp, %s, symb)) != EOF) {
    if (strcmp(symb, symbToFind) == 0) {  // strcmp will compare every word in the file
        // do whatever                    // to symbToFind
    }
}

这些替代方法允许您搜索文件中的每个字符或字符串,而不必将它们保存为数组。