在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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |