从文件中输入数字到char数组

时间:2017-04-01 23:07:58

标签: c arrays string

我正在尝试构建一个从文件中获取输入的rpn计算器。

输入看起来像7 2 10 + -

我想把这个输入放在一个char数组中,这是一个动态内存。 如何将数字添加到我的数组中而忽略空格?

我尝试使用fscanf(in,"%c", &input[i]),但是它存储空格以及处理10和1以及0。

我是C的新手,我对该主题有非常基本的了解,任何帮助都会深深体会:)谢谢

1 个答案:

答案 0 :(得分:0)

我认为这个练习不应该是初学者应该开始的;它有很多陷阱需要考虑,例如您的输入必须将数字与运算符分开,有效数字可以是-10甚至是+10,处理未知数量的令牌在开始时相当困难,依此类推

无论如何,请参阅以下代码,该代码至少解决了将文件读入字符串数组的主题,从而假设最多50个令牌,每个令牌的长度最多为99个字符。此上下文中的其他有用功能可能是isdigitatoi;希望它有所帮助。

int main(int argc, char* argv[]) {

    FILE *f = fopen("data.txt", "rt");
    if (!f)
        return 0;

    char* tokens[50];
    int nrOfTokens = 0;

    char token[100];
    // fscanf(f, "%s", token) tries to read in the next token (separated by white space);
    // it returns 1 if exactly one token has been read in, otherwise 0
    while (nrOfTokens < 50 && fscanf(f, "%s", token)==1) {
        tokens[nrOfTokens] = strdup(token);  // strdup copies the content of `token` and allocates enough memory for this copy.
        nrOfTokens++;
    }

    for (int i=0; i<nrOfTokens; i++) {
        printf("token: %s\n",tokens[i]);
    }

    return 0;
}