gpt4 book ai didi

C - 从 .txt 文件读取并将字符存储在数组中

转载 作者:行者123 更新时间:2023-11-30 14:31:45 25 4
gpt4 key购买 nike

我有一个名为“exampleWheel.txt”的 .txt 文件,其中包含 10 个字符:A、M、W、O、S、E、G、L、P、H。

enter image description here

我试图将字符存储在数组中,以便稍后可以根据每个字符在数组中的位置来引用它。

这是我的尝试:

#include <stdlib.h>

int main()
{
FILE * fPointer;
fPointer = fopen("exampleWheel.txt","r");
int i = 0;

char singleLine[150];
const char *array[10];

while(!feof(fPointer)){
fgets(singleLine, 150, fPointer);
array[i] = singleLine;
printf("%d\n",&array[i]);
printf("%s\n", array[i]);
i++;
}
fclose(fPointer);

printf("array[0] = %c\n", array[0]);
printf("array[1] = %c\n", array[1]);
return 0;
}

while 循环中的 printf 语句返回正确的输出,但 while 循环外的两个 printf 返回错误的结果。

printf("array[0] = %c\n", array[0])不返回数组的第一个字符

请告诉我如何改进我的代码。预先感谢您!!

最佳答案

  • 打开文件时,您应该始终检查错误并进行处理,例如通知用户并以错误代码结束程序
  • 尝试从文件中读取并且不要预先使用 feof 检查,请阅读 Why is “while ( !feof (file) )” always wrong?
  • 作业 array[i] = singleLine;存储指向 singleLine 字符数组的指针,但它将被循环中的下一个 fgets 调用覆盖。作为替代方案,您可以使用例如这里是一个二维数组,只保存第一个字符。
  • 您应该确保阅读的行数不会超过 array 中的空间。 ,否则你会覆盖数组的末尾

稍微修改一下代码可能如下所示:

#include <stdlib.h>
#include <stdio.h>


#define MAX_LINES 10

int main() {
char singleLine[150];
char array[MAX_LINES][2];

FILE *fPointer;
if ((fPointer = fopen("exampleWheel.txt", "r")) == NULL) {
fprintf(stderr, "can't open file");
exit(1);
}
int i = 0;
while (i < MAX_LINES && fgets(singleLine, 150, fPointer)) {
array[i][0] = singleLine[0];
array[i][1] = '\0';
printf("%d\n", *array[i]);
printf("%s\n", array[i]);
i++;
}
fclose(fPointer);

printf("array[0] = %c\n", array[0][0]);
printf("array[1] = %c\n", array[1][0]);
return 0;
}

关于C - 从 .txt 文件读取并将字符存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60139936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com