【问题标题】:fgetc returning unexpected value 49 when 1 is expectedfgetc 在预期为 1 时返回意外值 49
【发布时间】:2018-05-03 17:43:34
【问题描述】:

我在使用 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。

【问题讨论】:

  • 49'1' 的ascii 代码。使用printf("printing k : %c",k); 将其打印为字符
  • 当@Eugene-sh 指向%dk 的值打印为整数(即​​字符的ascii 值),如果您希望它打印您应该使用的字符%c .. . 还请阅读printf的手册页
  • Leonardo:很好奇,如果“a.txt”只有一个字符“*”,你希望k 有什么值?
  • @chux 我希望你有你的毛巾。
  • 投票结果很有趣...我想这可能是某种研究的主题...

标签: c stdio fgetc


【解决方案1】:

fgetc()的描述说:

返回内部文件位置指示器当前指向的字符

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多