gpt4 book ai didi

c - getc 返回值存储在一个 char 变量中

转载 作者:行者123 更新时间:2023-12-04 10:40:04 25 4
gpt4 key购买 nike

关于 this维基百科页面有一个示例 C 程序读取和打印文件的前 5 个字节:

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

int main(void)
{
char buffer[5] = {0}; /* initialized to zeroes */
int i;
FILE *fp = fopen("myfile", "rb");

if (fp == NULL) {
perror("Failed to open file \"myfile\"");
return EXIT_FAILURE;
}


for (i = 0; i < 5; i++) {
int rc = getc(fp);
if (rc == EOF) {
fputs("An error occurred while reading the file.\n", stderr);
return EXIT_FAILURE;
}
buffer[i] = rc;
}

fclose(fp);

printf("The bytes read were... %x %x %x %x %x\n", buffer[0], buffer[1], buffer[2], buffer[3], buffer[4]);

return EXIT_SUCCESS;
}

我不明白的部分是它使用 getc 函数返回一个 int 并将其存储在 char 数组中- 如何将 int 存储在 char 数组中?

最佳答案

从技术上讲,C 允许您通过将变量分配给比自身小的变量来“缩短”变量。规范并没有确切说明当你这样做时会发生什么(因为某些机器的技术性会发生一些奇怪的事情),但实际上,在几乎所有你可能使用的机器上,除非你处理博物馆藏品或一些非常特殊硬件,它的作用就好像较大数字的“高”位已被“切断”一样。

在这种特殊情况下,getc 专门设计用于返回适合 char 的内容,但返回 EOF 的情况除外>,其值通常为 -1。尽管 char 也经常支持值 -1,但不能保证一定是这种情况(如果 char 是无符号的type - C 和 C++ 标准同样支持的东西,char 是可以是 -1 的有符号类型)。

关于c - getc 返回值存储在一个 char 变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18540179/

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