c - fgetc 在预期为 1 时返回意外值 49

标签 c stdio fgetc

我在使用 fgetc 函数从文件中读取值时遇到问题。这是我正在使用的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int k;

    FILE* rede = fopen("/home/leocal/Desktop/Poli/2018-1/Numérico/EP1/Redes/1_Stevenson/a.txt", "r");

    if (rede == NULL) {
        printf("Couldn't open file\n");
        return 1;
    }

    k = fgetc(rede);
    if (k!=EOF) {
    printf("printing k : %d",k);
    }

    fclose(rede);

    return 0;
} 

文件“a.txt”只有一个字符“1”,但 k 收到值 49。

最佳答案

fgetc()的描述说:

Returns the character currently pointed by the internal file position indicator

您正在读取字符“1”,然后打印它的十进制值

printf("printing k : %d",k);

要使用 printf 打印字符的值,请使用 %c:

printf("printing k : %c",k);

您可以阅读有关 printf 以及如何格式化其输出的更多信息 here .

关于c - fgetc 在预期为 1 时返回意外值 49,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161018/

相关文章:

c - 这两种写结构的方式有什么区别?

java - 我的代码不会返回任何内容!输出只是空白

c - 检测输入中的空白

java - 是否可以使用 SWIG 生成的 JNI 从 C 代码调用 java 方法?

c - 在c中写入文件,垃圾值被填充

c - 与 irc 服务器的连接

C fork程序解释

c - 用C中的argv计数

c - 将内容从一个文件复制到另一个文件时出错 - 末尾出现随机字母

c - fgetc 没有停止我的循环