在C中存储包含整数和字符的文件的内容

我有一个文本文件input.txt,其内容是以下形式:

12 3 /
2 3 -
3 4 *
1 2 4 + - 5 * 7 /

我的最终目标是读取文件的每一行并评估给定的RPN表达式.我编写了以下代码片段来从stdin读取文件的内容并将其存储在字符数组中:

char expression[1000][256];
int i = 0;
while (fgets(expression[i], 256, stdin)) 
{   
    expression[i][strcspn(expression[i],"\r\n")] = 0;
    i++;
}

现在,我拥有数组中的所有行.我的问题是,我想存储这些,使得没有空格,每个数字(所有数字)或字符都在一个单独的索引中.

例如,这里,表达式[0] [0]为1,表达式[0] [1]为2.但是,我希望表达式[0] [0]为12,表达式[0] [1]为3等

最佳答案 到目前为止你的例子很好!感谢您发布解释您想要的问题,并尝试解决问题.

你需要的主要问题是,当你需要一个字符串数组的数组时,你要存储一个chars数组数组(记住一个字符串是一个char *).

我已经使用了[strtok] [1]方法,它每次碰到一个字符串(使用NULL字符)就会触及其调用中列出的一个字符.然后我分配内存,并将字符串复制到数组中.

我编写了一些示例代码(try it online),它就是这样做的.

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

int main() {
    char* expression[1000][256];
    char buffer[256];
    int line = 0;

    while (fgets(buffer, 256, stdin)) {
        int word = 0;
        char* token = strtok(buffer, " \r\n");
        do {
            expression[line][word] = calloc(sizeof(char), strlen(token) + 1);
            strcpy(expression[line][word], token);
            word++;
        } while ((token = strtok(NULL, " \r\n")) != NULL);
        line++;;
    }
    printf("'%s', '%s', '%s'\n", expression[0][0], expression[0][1], expression[0][2]);
    return 0;
}
点赞