首页 > 解决方案 > 如何在c中将多个字符串存储在数组中

问题描述

嘿,所以我目前正在尝试存储来自命令行参数的文本文件的多个字符串。我被告知要使用 2D 数组,所以我声明了 size [count] 之一,在此示例中为 4。但是,当我必须使用 fgets 将每一行存储在数组中时,它似乎不起作用,因为当我将结果打印到控制台时,我得到了一堆随机字符。

count = 4;

char string_array[count][100];

    int loop_counter = 0;
    while (!feof(file_pointer) && loop_counter < 10)
    {
       fgets(string_array[loop_counter], 150, file_pointer);
       loop_counter += 1;
    }

printf("First string is %s", string_array[0]);

最后一个 printf 语句返回:

第一个字符串是▒▒ap▒ X▒a

查看随机字符^。第一个字符串应该是“A 1 2 3 4 5”。文本文件如下所示:

A 1 2 3 4 5
B 0 0
C 1 1
F 2 2

标签: c

解决方案


正如@kleshenki 提到的,这可能是一个编码问题。

我尝试重构代码以使用 getline 。所以试一试。如果它不起作用,我将删除此帖子。

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


int main()
{
    int count = 4;

    char string_array[count][100];
    FILE *fp = fopen("test.txt","r");

    ssize_t read;
    int i = 0;
    size_t n = 100;
    char *lines = string_array[i];
    while (i<count&&( read=getline(&lines, &n, fp) )!= -1)
    {

        lines = string_array[i];
    }

    printf("First string is %s", string_array[0]);
    printf("Second string is %s", string_array[1]);
    fclose(fp);
}

推荐阅读