繁体   English   中英

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

[英]C - Reading from a .txt file and storing the characters inside an array

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

在此处输入图片说明

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

这是我的尝试:

#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,请阅读为什么“while (!feof (file))”总是错误的?
  • 赋值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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM