调用数组的特定索引时,将打印所有值

托比·加农

我已使用此处找到的一段代码.txt逐行读取文件,我认为这应将所有行添加到名为的数组中words每当我尝试从数组中返回一个值时,例如printf(words[7]);,将返回文本文档中的所有行,而不仅是数组中的第7个值。是否所有行均未正确拆分为数组,或者是否已返回数组的所有值?

void readFile() {
    FILE* fp; // Declare the file pointer

    int lines_allocated = 128;
    int max_line_len = 100;

    /* Allocate lines of text */
    char** words = (char**)malloc(sizeof(char*) * lines_allocated);
    if (words == NULL) {
        fprintf(stderr, "Out of memory (1).\n");
        exit(1);
    }

    switch (difficulty) // Open the file for read
    {
        case 'e':
            fp = fopen("words_easy.txt", "r");
            break;
        case 'm':
            fp = fopen("words_medium.txt", "r");
            break;
        case 'h':
            fp = fopen("words_hard.txt", "r");
            break;
        default:
            printf("Cannot open file");
    }
    if (fp == NULL) {
        fprintf(stderr, "Error opening file.\n");
        exit(2);
    }

    int i;
    for (i = 0; 1; i++) {
        int j;

        /* Have we gone over our line allocation? */
        if (i >= lines_allocated) {
            int new_size;

            /* Double our allocation and re-allocate */
            new_size = lines_allocated * 2;
            words = (char**)realloc(words, sizeof(char*) * new_size);
            if (words == NULL) {
                fprintf(stderr, "Out of memory.\n");
                exit(3);
            }
            lines_allocated = new_size;
        }
        /* Allocate space for the next line */
        words[i] = malloc(max_line_len);
        if (words[i] == NULL) {
            fprintf(stderr, "Out of memory (3).\n");
            exit(4);
        }
        if (fgets(words[i], max_line_len - 1, fp) == NULL)
            break;

        /* Get rid of CR or LF at end of line */
        for (j = strlen(words[i]) - 1;
             j >= 0 && (words[i][j] == '\n' || words[i][j] == '\r'); j--)
            ;
        words[i][j + 1] = '\0';
    }

    /* Close file */
    fclose(fp);

    int j;
    for (j = 0; j < i; j++)
        printf("%s\n", words[j]);

    /* Good practice to free memory */
    for (; i >= 0; i--)
        free(words[i]);
    free(words);
    printf(words[7]);
    return 0;
}

该文档每行只有一个单词,我只想打印一个单词作为测试,但是当我尝试从数组中调用一个值时,我会将所有行输出到控制台。

苏拉夫·戈什(Sourav Ghosh)

第1点:在代码中,您已经编写了

free(words);
printf(words[7]);

free()d之后访问指针将导致未定义的行为

第2点:

for (j = 0; j < i; j++)
        printf("%s\n", words[j]);

无论如何,for循环将打印所有行。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从数组中的所有索引中获取特定值

来自分类Dev

打印数组时,它会打印任意符号,因为我没有使用所有数组值

来自分类Dev

打印数组时,它会打印任意符号,因为我没有使用所有数组值

来自分类Dev

获取所有可能的数组索引值

来自分类Dev

过滤数组数组时扫描所有/特定数组值

来自分类Dev

(多维数组)更改索引为特定字符串的所有值

来自分类Dev

如何调用所有数组值

来自分类Dev

jq-如何以正确的顺序打印JSON数组的整个索引,而不是依次打印一个特定字段的所有索引?

来自分类Dev

python将每个索引处的数组中的所有接下来的n个值相加

来自分类Dev

将所有数组值移动到一个索引

来自分类Dev

sessionStorage进入数组并打印数组中的所有值

来自分类Dev

尝试将状态设置为具有对象的状态数组的特定索引时出错

来自分类Dev

打印具有特定图案和所有值的列

来自分类Dev

当索引既是时间戳又是日期时间时,将所有索引值都转换为日期时间

来自分类Dev

更改数组中索引的值,将索引从旧索引开始向右移动,同时保留所有索引向左完整

来自分类Dev

在特定索引之后从数组返回所有字符串

来自分类Dev

GDB打印char数组中的所有值

来自分类Dev

在循环中从循环打印数组中的所有值

来自分类Dev

打印所有总计为特定值的子集

来自分类Dev

如何打印特定Hashmap密钥的所有值

来自分类Dev

通过索引/键合并数组,保留所有值

来自分类Dev

如何获取数组中相同值的所有出现的索引?

来自分类Dev

通过索引/键合并数组,保留所有值

来自分类Dev

如何获取JSON响应数组的所有索引值?

来自分类Dev

索引匹配查找数组中所有查找值的位置

来自分类Dev

PHP - 通过索引获取数组的所有值的本机函数

来自分类Dev

在特定索引处将值分配给数组

来自分类Dev

将数组中的所有值设置为零时出错

来自分类Dev

尝试打印所有ASCII值时出现无限循环

Related 相关文章

  1. 1

    如何从数组中的所有索引中获取特定值

  2. 2

    打印数组时,它会打印任意符号,因为我没有使用所有数组值

  3. 3

    打印数组时,它会打印任意符号,因为我没有使用所有数组值

  4. 4

    获取所有可能的数组索引值

  5. 5

    过滤数组数组时扫描所有/特定数组值

  6. 6

    (多维数组)更改索引为特定字符串的所有值

  7. 7

    如何调用所有数组值

  8. 8

    jq-如何以正确的顺序打印JSON数组的整个索引,而不是依次打印一个特定字段的所有索引?

  9. 9

    python将每个索引处的数组中的所有接下来的n个值相加

  10. 10

    将所有数组值移动到一个索引

  11. 11

    sessionStorage进入数组并打印数组中的所有值

  12. 12

    尝试将状态设置为具有对象的状态数组的特定索引时出错

  13. 13

    打印具有特定图案和所有值的列

  14. 14

    当索引既是时间戳又是日期时间时,将所有索引值都转换为日期时间

  15. 15

    更改数组中索引的值,将索引从旧索引开始向右移动,同时保留所有索引向左完整

  16. 16

    在特定索引之后从数组返回所有字符串

  17. 17

    GDB打印char数组中的所有值

  18. 18

    在循环中从循环打印数组中的所有值

  19. 19

    打印所有总计为特定值的子集

  20. 20

    如何打印特定Hashmap密钥的所有值

  21. 21

    通过索引/键合并数组,保留所有值

  22. 22

    如何获取数组中相同值的所有出现的索引?

  23. 23

    通过索引/键合并数组,保留所有值

  24. 24

    如何获取JSON响应数组的所有索引值?

  25. 25

    索引匹配查找数组中所有查找值的位置

  26. 26

    PHP - 通过索引获取数组的所有值的本机函数

  27. 27

    在特定索引处将值分配给数组

  28. 28

    将数组中的所有值设置为零时出错

  29. 29

    尝试打印所有ASCII值时出现无限循环

热门标签

归档