加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:23:49 所属栏目:百科 来源:网络整理
导读:我有一个文本文件input.txt,其内容是以下形式: 12 3 /2 3 -3 4 *1 2 4 + - 5 * 7 / 我的最终目标是读取文件的每一行并评估给定的RPN表达式.我编写了以下代码片段来从stdin读取文件的内容并将其存储在字符数组中: char expression[1000][256];int i = 0;whi
我有一个文本文件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],"rn")] = 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,stdin)) {
        int word = 0;
        char* token = strtok(buffer," rn");
        do {
            expression[line][word] = calloc(sizeof(char),strlen(token) + 1);
            strcpy(expression[line][word],token);
            word++;
        } while ((token = strtok(NULL," rn")) != NULL);
        line++;;
    }
    printf("'%s','%s','%s'n",expression[0][0],expression[0][1],expression[0][2]);
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读