gpt4 book ai didi

c - 将文件中的数字输入到 char 数组中

转载 作者:行者123 更新时间:2023-11-30 16:47:58 26 4
gpt4 key购买 nike

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

输入看起来像7 2 10 + -

我想将此输入放入一个动态内存的字符数组中。如何将数字添加到数组中而忽略空格?

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

我是 C 语言的新手,我对这个主题有相当的基础知识,任何帮助将不胜感激:)谢谢

最佳答案

我认为这个练习不适合初学者开始;它有很多陷阱需要考虑,例如您的输入必须将数字与运算符分开,有效数字可以是 -10 甚至 +10 ,处理未知数量的 token 是相当困难的一开始就很难,等等。

无论如何,请参阅以下代码,它至少解决了将文件读入字符串数组的主题,从而假设最多 50 个标记,每个标记的长度最多为 99 个字符。在这种情况下,其他有用的函数可能是 isdigit 和 atoi;希望它能有所帮助。

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;
}

关于c - 将文件中的数字输入到 char 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43162965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com