使用C读取并保存txt文件的每个单词?

Posted

技术标签:

【中文标题】使用C读取并保存txt文件的每个单词?【英文标题】:Read and save each word of a txt file using C? 【发布时间】:2022-01-04 07:49:29 【问题描述】:

我正在尝试编写一个程序:

打开一个txt文件 读取一行的第一个单词并将其存储在变量(或数组)中 => 它将是一个名称 读取一行的第二个单词并将其存储在 var/array 中 => 这将是一个大学系 为每一行执行此操作,以便遍历整个文件

我尝试将 printf("%s", variable) 添加到我的代码中以查看它的效果,但结果非常不一致:一次没有任何反应,一次正确,一次正确写但旁边有一个奇怪的符号 (哦,而且,它只适用于代码的部门部分,而不是名称)

这是我的 txt 文件:

Marie GMP
Rodriguez STID
Latreze GEA
Dos-Santos INFO
Coulon GMP
Fernandez INFO
Munoz GEA
Clerc GEA
Delahaye STID
Fernandes STID
Vallet STID
Martineau STID
Langlois GMP
Zinedan STID
Regnier-Laine INFO
Guillot GMP
Meyer-Alexandre TC
Tanguy GMP
Legros GMP
Herve GMP
Robinski STID
Michaud INFO
Barthelemy GMP
Vincent GEA

还有我的代码:


#include <stdio.h>
#include <stdlib.h>
#define TAILLE_TABLE 100

int main() 
    char charActuel;
    char studentName[TAILLE_TABLE];
    char studentDpt[TAILLE_TABLE];

    printf("Etudiants faisant du sport ET de la musique\n\n");

    FILE* fichierMusique = NULL;
    fichierMusique = fopen("data/MUSIQUE.txt", "r");

    if (fichierMusique != NULL) 
            printf("fichier ouvert\n");
        
        int i = 1;
        do 
            charActuel = fgetc(fichierMusique);
            studentName[i] = charActuel;
            printf("%c", charActuel);
            i = i + 1;
        
        while (charActuel != ' ');
        printf("%s-\n", studentName);
        i = 1;

        do 
            charActuel = fgetc(fichierMusique);
            studentDpt[i] = charActuel;
            printf("%c", charActuel);
            i = i + 1;
        
        while (charActuel != '\n');

        
        printf("%s\n", studentDpt);


        fclose(fichierMusique);
        printf("fichier fermé");

    
    else 
        printf("Impossible d'ouvrir le fichier MUSIQUE.txt");
    

    return 0;

你看出问题出在哪里了吗?

【问题讨论】:

一个问题是名称“Meyer-Alexandre”不适合大小为 15 的数组。我会将 TAILLE_TABLE 的定义更改为至少 100。你需要放置一个 NUL终止符 '\0' 在字符串的末尾,或 printf"%s" 将不起作用。 我刚刚修好了谢谢,不幸的是我认为这不是唯一的问题 另外,i 需要从 0 开始,因为 C 中的数组从 0 开始索引。 我认为这是问题所在,因为它现在可以工作了,谢谢 请从工作代码中创建一个答案。或者删除问题。 【参考方案1】:

既然我得到了回应,问题就出在这里:

我应该从 0 而不是 1 开始 哦,我还添加了有人告诉我要进行的修改,所以这是代码:

#include <stdio.h>
#include <stdlib.h>
#define TAILLE_TABLE 100

int main() 
    char charActuel;
    char studentName[TAILLE_TABLE];
    char studentDpt[TAILLE_TABLE];

    printf("Etudiants faisant du sport ET de la musique\n\n");

    FILE* fichierMusique = NULL;
    fichierMusique = fopen("data/MUSIQUE.txt", "r");

    if (fichierMusique != NULL) 
        int i = 0;


        printf("fichier ouvert\n\n");
        do 
            charActuel = fgetc(fichierMusique);
            studentName[i] = charActuel;
            i = i + 1;
        
        while (charActuel != ' ');

        studentName[i-1] = '\0';
        printf("%s\n", studentName);
        i = 0;

        do 
            
            charActuel = fgetc(fichierMusique);
            studentDpt[i] = charActuel;
            i = i + 1;
        
        while (charActuel != '\n');

        studentDpt[i-1] = '\0';
        printf("%s\n", studentDpt);


        fclose(fichierMusique);
        printf("fichier fermé");

    
    else 
        printf("Impossible d'ouvrir le fichier MUSIQUE.txt");
    

    return 0;

【讨论】:

以上是关于使用C读取并保存txt文件的每个单词?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 txt 文件中读取特定的单词和数字并将它们保存在矩阵中

有没有办法在C ++中读取文件的文件夹?

201671030113 词频统计软件项目报告

替换文件里的相关单词之文件类型为txt

打印文件中每个单词的出现次数[关闭]

python替换txt文件中固定内容