如何将文件中的文本读取到数组中,然后将整个数组打印出来

奥利弗·霍托卡宁

好的!这个东西很新!

这是更大的任务的一部分,我现在遇到的问题是我在文本文件中有一个名称列表(100个名称)。他们是这样写的:

Sam(输入)Oliver(输入)Paul(输入)---依此类推。

因此,每个名称都在自己的行上。我试图将其读入一个char数组,然后将其打印出来以检查其是否有效。之后,我将不得不对它进行其他操作,但我想稍后再解决。现在是我的代码:(文件名等是芬兰语,所以请不要打扰!:D)

#include <stdio.h>

int main() {
    FILE *tiedosto;
    char *array[100];
    char nimi[] = "names.txt";

    tiedosto = fopen(nimi, "r");

    if (tiedosto == NULL) {
        printf("Tiedostoa ei voida avata");
        return;
    }

    int i;
    for (i = 0; i < 100; i++) {
        fscanf(tiedosto, "%s", &array[i]);
    }
    fclose(tiedosto);

    printf("Tulostetaan taulukko \n");
    // printf("%s \n",array);

    for (i = 0; i < 100; i++) {
        printf("%s \n", array[i]);
    }

    return 0;
}
罗汉·巴里

您在代码中有几个错误:

  1. 在这一行:

    fscanf(tiedosto, "%s", &array[i]);
    

    您无需在此处使用与号。这是因为-array已经是这种类型char*[]-在这种情况下,您必须避免通过char**

  2. 在以下代码段中:

    if (tiedosto == NULL) {
        printf("Tiedostoa ei voida avata");
        return; // ***
    }
    

    的返回类型main()是整数,因此它必须传递非空值。任何非零的返回码都将指示程序关闭失败。

  3. 在此声明中:

    char *array[100];
    

    array使用指针阵列旁边太。因此,必须使用malloc()函数正确初始化它,以免出现段错误。

    如果您不想弄乱分配内存等问题,请尝试切换到二维数组声明:

    char array[TOTAL_ENTRIES][PER_NAME_LEN];
    

我已经描述了2-D数组方法以避免代码复杂(请阅读注释以进行解释):

#include <stdio.h>

// Some global macros throughout this program
#define MAX_USERS    100
#define MAX_STRLEN   64

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1

int main(void) {
    const char *file_name = "names.txt";
    FILE *fp = fopen(file_name, "r");
    char name_list[MAX_USERS][MAX_STRLEN];
    int count = 0;

    // Using perror() is the best option here
    if (fp == NULL) {
        perror(file_name);
        return EXIT_FAILURE;
    }

    // Reading the file contents and saving that into 2-D array
    while (fscanf(fp, "%s", name_list[count++]) != EOF)
        ;

    // Displaying the saved array contents        
    for (int i = 0; i < count - 1; i++)
        fprintf(stdout, "%s\n", name_list[i]);

    return 0;
}

在此程序中,names.txt文件中的行数可以小于或等于100。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从文本文件中读取IP地址列表并打印出来

Fizzbuzz 基本问题,如何将替换的项目推送到一个空数组中,而不是仅仅将它们打印出来

如何将结果写在列表中而不是在序言中打印出来

如何将Firebase数据存储在阵列中并打印出来?

将结果存储在C ++中的Map中,然后对其进行迭代,然后打印出来?

使用Linq将二维数组除以2,然后打印出来

在 Python 中读取文件并打印出来

如何将Pig命令的输出转移到文本文件以打印出来?

如何在Java中读取文本文件的第一行并将其打印出来?

如何将 1 个数字放入 pastebin,打印出来并等待 1 秒钟,然后再放入第二个数字

如何将MySqlDataReader复制到数组中,然后遍历整个数组?

从.data文件读取到Java中,如何将信息存储在数组数组中?

将数组数组转换为jSON并使用php打印出来

如何将值交给双指针并打印出来,就好像它是多维数组一样?(C)

如何从文本文件中过滤出字母(字符串的开头和结尾),然后将它们打印出来

Python:如何将包含行列格式的坐标的文本文件读取到xy坐标数组中?

如何将具有浮点数的文本文件读取到C中的浮点数组

排序数组并打印出来

如何将输入内容添加到由Shell脚本检索的网站中,以便可以将输出内容打印出来?

如何使用Python将文本文件中的数据读取到数组中

为什么将值设置为数组的特定下标不能打印出来?

如何将字符串放入char堆栈并打印出来?C ++

如何将 Map ByteString ByteString 转换为 Map String String 并打印出来

如何将原子按降序排序并打印出来

如何在函数中计算答案,然后从 main() 函数中打印出来?

如何将csv文件读取到Python 2d数组中?

如何将csv文件数据读取到数组中?

如何在数组中存储多个值(具有不同类型)并打印出来?

我将如何使用printf()和输入单词的String数组在一个星号框中打印出来