使用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文件的每个单词?的主要内容,如果未能解决你的问题,请参考以下文章