C fgetc 同时用作同一函数的参数时的奇怪行为

标签 c fgetc

我正在使用 fgetc 从文本文件读取和验证流,一次一个字符,但由于某种原因它会重新排序字符。该文本文件包含类似“abc”的内容

void newFunction(int i, int j, int k);

int main()
{
    FILE *fp;
    /...opens text file.../
    newFunction(fgetc(fp), fgetc(fp), fgetc(fp));
}

void newFunction(int i, int j, int k)
{
    printf("%d %d %d", i, j, k,);
}

我期待 a b c,但为什么我的代码给出 c b a

最佳答案

void newFunction(int i, int j, int k);

int main()
{
    FILE *fp;
    /...opens text file.../
    int i = fgetc(fp);
    int j = fgetc(fp);
    int k = fgetc(fp);
    newFunction(i,j,k);
}

void newFunction(int i, int j, int k)
{
    printf("%d %d %d", i, j, k);
}

您可以执行上述操作以避免评估参数的顺序出现歧义。

关于C fgetc 同时用作同一函数的参数时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43567886/

相关文章:

c - 在 while 循环中合并 fgetc 和 putchar

无法添加到数组中的整数

c - 如何在C中对单个字符执行scanf

字符改变邻居

c - 文件中的字符数?

c - 当使用 fgetc() 时,分配的变量给出 EOF

java - 如何缩短 Android 中的编码?

c语言: printf help

c - 在自定义宏中使用 offsetof 宏

c - 为什么这个程序的行为类似于 `tail -f`