- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码来 self 所获得的函数的一部分:
char ch;
ch = fgetc(fp);
if (ch == EOF)
return -1;
哪里fp
是作为参数传递给函数的指向文件/流的指针。
但是,检查了 fgetc()
的用法, getc()
和getchar()
,似乎它们都返回 int 类型而不是 char 类型,因为 EOF 不适合 char 中使用的 0-255 值,因此通常 < 0(例如 -1)。然而,这让我问三个问题:
getchar()
返回int,为什么是char c; c = getchar();
该函数的有效用法?在这种情况下,以及 getchar()
的情况下,C 是否会自动类型转换为 char替换为 getc(fp)
或fgetc(fp)
?fgetc()
时程序中会发生什么或者其他两个函数返回EOF?它会再次尝试像以前一样转换为 char 但随后失败吗? ch
中存储的内容,如果有的话?ch == EOF
又是怎样的呢?有效的比较,因为 EOF 不能用 char 变量表示?最佳答案
If getchar() returns int, why is char c; c = getchar(); a valid usage of the function?
事实并非如此。仅仅因为您可以编写并且编译器(以某种方式)允许您编译它,并不会使代码有效。
我相信以上回答了所有问题。
补充一下,如果返回 EOF
,则无法将其存储在 char
中。 char
的符号是实现定义的,因此,根据第 6.3.1.3 章,C11
When a value with integer type is converted to another integer type other than _Bool, if the value can be represented by the new type, it is unchanged.
Otherwise, if the new type is unsigned, the value is converted by repeatedly adding or subtracting one more than the maximum value that can be represented in the new type until the value is in the range of the new type.60)
Otherwise, the new type is signed and the value cannot be represented in it; either the result is implementation-defined or an implementation-defined signal is raised.
关于关于 fgetc 使用的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43412305/
#include #include #include int main() { FILE *userfile, *pwfile, *usernamesPass
我正在使用 fgetc 从文本文件读取和验证流,一次一个字符,但由于某种原因它会重新排序字符。该文本文件包含类似“abc”的内容 void newFunction(int i, int j, int
我正在使用 fgetc 和字符计数方法来循环遍历字 rune 件并以相反的顺序返回它们。当我尝试这样做时,发生了两件意想不到的事情。当我将循环的第二次迭代粘贴到第一次迭代下方时,它返回一个非常不同的、
我正在尝试读取一个文件,直到遇到 1 到 5 之间的随机 int,然后将该 int 旁边的单词读入数组。在尝试将随机 int 与 fgetc() 的返回值进行比较之前,代码运行良好(它将字符读入数组直
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
目前,我正在读取 execlp 的子程序的输入行。所以基本上,如果子程序无法正确执行,它在读取时不应该是管道信息,并且会抛出错误。 我尝试轮询文件描述符,无论程序是否正确执行,它都会返回一个。所以基本
我正在尝试使用 fgetc() 函数逐字符读取文本文件,但它不显示任何输出。这是一个学校项目,仍然以非常非常简单的方式只是为了测试程序的功能。 #include #include void fn1
在 while 循环中,fgetc 命令跳过第一个字符,我似乎不明白为什么。 void generate_people(FILE *p, struct person *a){ int c;
所以我正在开发一个函数,该函数将使用 fgetc 将一行读入缓冲区。所以我可以随意使用该缓冲区,然后用下一行重新填充缓冲区。我的函数可以工作,但是我必须在 for 循环之外重复代码才能处理最后一行,如
我有一个文件 data.dat HI5 LO2 我想从中读取 5 和 2,并将它们存储为 uint16。我已经写了 #include int main() { unsigned short
我试图让 fgetc 读取文件并从某个指示器跳过直到新行。这似乎是一个简单的问题,但我找不到任何相关文档。 这是我的问题的示例: read this in ; skip from semicolon
int ch; char Name1[24], Name2[24],*p1,*p2; while ((ch = fgetc(inz)) != EOF){ fseek(inz,
这个问题已经有答案了: Difference between int and char in getchar/fgetc and putchar/fputc? (2 个回答) 已关闭 6 年前。 以下
这个问题已经有答案了: fgetc(stdin) in a loop is producing strange behaviour (4 个回答) 已关闭 5 年前。 我正在尝试使用 C 语言 fge
我正在测试 fgetc() 函数,但它无法正常工作(我以前使用过这个函数,所以我知道它是如何工作的) #include #include int main() { FILE *file =
我有一个类似于 7 4 5 1 等的文件。我想将这些数字放入多维数组中。 for(x=0;x 下次执行循环时,y == 2,您会读取'4',并将其放入sudokuArray[0][2]. 所以 fge
我有代码块,我在某个循环中执行它并期望得到具体结果: 代码: fseek(file, start_seek_position, SEEK_SET); cout file = fopen(file_n
我使用函数fgetc读取文件的每个字节,然后用printf写入。 我只是注意到,当我将结果与十六进制编辑器进行比较时,fgetc 有时会遗漏一些字节。 比如第一个错误是从第118个字节左右开始的,其他
我在编写这段代码时遇到了一些麻烦。我可以让它在其他地方编译,但是当我尝试在我的机器上编译时,我遇到了段错误。 这是我收到的错误消息: 0x0000000000400dc6 in readFile (k
我希望我不会因为这个而很快被否决,但我有一个我正在为学校工作的项目,我必须在其中构建一个拼写检查器。我决定使用 trie,它似乎工作正常,但我有一个我找不到的错误。我认为问题出在以下, bool lo
我是一名优秀的程序员,十分优秀!