我有一个文本文件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;
}