Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件结构成员在C中已更改 #包括 空干管() { 文件*fp=stdin; printf(“输入字符串:”); printf(“getchar()-%c\n”,getchar()); printf(“[%d]%s”,fp->\u cnt,fp->\u base); printf(“读取:%d\n”,fp->\u ptr-fp->\u base); printf(“\\n\ngetchar()-%c\n”,getchar()); printf(“[%d]%s”,fp->\u cnt,fp->\u base); printf(“读取:%d\n”,fp->\u ptr-fp->\u base); fflush(fp); printf(“\n\n冲洗后\n[%d]%s”,fp->\u cnt,fp->\u base); printf(“读取:%d\n”,fp->\u ptr-fp->\u base); } 我的C语言书中有这段代码,但在文件结构中没有\u cnt成员 我怎样才能得到正确的结果_C_File - Fatal编程技术网

文件结构成员在C中已更改 #包括 空干管() { 文件*fp=stdin; printf(“输入字符串:”); printf(“getchar()-%c\n”,getchar()); printf(“[%d]%s”,fp->\u cnt,fp->\u base); printf(“读取:%d\n”,fp->\u ptr-fp->\u base); printf(“\\n\ngetchar()-%c\n”,getchar()); printf(“[%d]%s”,fp->\u cnt,fp->\u base); printf(“读取:%d\n”,fp->\u ptr-fp->\u base); fflush(fp); printf(“\n\n冲洗后\n[%d]%s”,fp->\u cnt,fp->\u base); printf(“读取:%d\n”,fp->\u ptr-fp->\u base); } 我的C语言书中有这段代码,但在文件结构中没有\u cnt成员 我怎样才能得到正确的结果

文件结构成员在C中已更改 #包括 空干管() { 文件*fp=stdin; printf(“输入字符串:”); printf(“getchar()-%c\n”,getchar()); printf(“[%d]%s”,fp->\u cnt,fp->\u base); printf(“读取:%d\n”,fp->\u ptr-fp->\u base); printf(“\\n\ngetchar()-%c\n”,getchar()); printf(“[%d]%s”,fp->\u cnt,fp->\u base); printf(“读取:%d\n”,fp->\u ptr-fp->\u base); fflush(fp); printf(“\n\n冲洗后\n[%d]%s”,fp->\u cnt,fp->\u base); printf(“读取:%d\n”,fp->\u ptr-fp->\u base); } 我的C语言书中有这段代码,但在文件结构中没有\u cnt成员 我怎样才能得到正确的结果,c,file,C,File,您正在使用的这本书与C的一个具体实现相结合,可能是一个相当古老的实现。这些成员名称在Kernighan和Ritchie的《C编程语言》第一版中使用。在第二版中,删除了下划线。要使此代码按原样工作,您必须使用匹配的C实现,这在现代平台上可能会有问题 或者,如果您正在使用的C实现具有类似的成员,则可以通过修改成员名称使代码正常工作。然而,现代C库标题中的代码对于学生来说可能很难理解,因为它已经能够适应不同平台的许多特性和变化,这使它变得相当复杂。你最好找一本现代教科书 请注意,在书中显示文件结构成员

您正在使用的这本书与C的一个具体实现相结合,可能是一个相当古老的实现。这些成员名称在Kernighan和Ritchie的《C编程语言》第一版中使用。在第二版中,删除了下划线。要使此代码按原样工作,您必须使用匹配的C实现,这在现代平台上可能会有问题

或者,如果您正在使用的C实现具有类似的成员,则可以通过修改成员名称使代码正常工作。然而,现代C库标题中的代码对于学生来说可能很难理解,因为它已经能够适应不同平台的许多特性和变化,这使它变得相当复杂。你最好找一本现代教科书


请注意,在书中显示
文件
结构成员的地方,很可能是在教授有关标准库如何实现或如何运行的理论。它没有向您显示应该在使用C库的常规程序中使用的代码。

正确的结果是什么?这将是糟糕的C代码(而且,隐含地说,是一本糟糕的书)。
文件*
类型指向一个,其成员永远不应该被显式使用。这本书是什么,为什么它使用
文件
结构的内部部分?@AdrianMole:如果
文件
结构的成员永远不应该被显式使用,那么谁又能实现标准的I/O功能呢?或者教别人如何实现它们?@Eric好的,它们不应该被实现本身之外的代码使用。相反,应该使用标准例程来检索有关打开文件的信息。毫无疑问,您会知道,不同的实现可以以不同的方式实现
文件
结构,成员的名称也不同。
#include <stdio.h>

void main( )
{
    FILE* fp = stdin;
    printf("Input string: ");
    
    printf("getchar( ) - %c\n", getchar());
    printf("[%d] %s", fp->_cnt, fp->_base);
    printf("READ: %d\n", fp-> _ptr - fp->_base);


    printf("\\n\ngetchar( ) - %c\n", getchar());
    printf("[%d] %s", fp->_cnt, fp->_base);
    printf("READ: %d\n", fp->_ptr - fp->_base);


    fflush(fp);
    printf("\n\nAfter flushing\n[%d] %s", fp->_cnt, fp->_base);
    printf("READ: %d\n", fp->_ptr - fp->_base);
}