当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

C语言缓冲区在哪里

更新:02-25 整理:39baobao.com
字体:

[小班语言《小猫在哪里》教案及反思]设计意图: “小猫”是幼儿熟悉的角色,深受小班孩子的喜欢。本次活动我是以“找小猫”为活动背景,从而让幼儿认识并说出不同的方位词:“上下、前后、里”。通过情景创设,游戏互动...+阅读

缓冲区具体在哪里是与操作系统、编译器相关的 以VC++为例。察看getchar的源代码(src\fgetchar.c),有: int __cdecl _fgetchar (void){ return(getc(stdin)); } #undef getchar int __cdecl getchar (void){ return _fgetchar(); } 可见getchar()相当于getc(stdin) 继续察看getc(src\fgetc.c),有一段(为便于阅读,有删减): int __cdecl getc (FILE *stream){ int retval; _ASSERTE(stream != NULL); _lock_str(stream); __try { retval = _getc_lk(stream); } __finally { _unlock_str(stream); } return(retval); } 这段代码里_lock_str其实是通过Win32 API提供的临街区来锁住文件 接收用户输入发生在_getc_lk,_getc_lk宏调用_filbuf。_filbuf在_filbuf.c中可以查看,这段代码比较长,就不贴出来了 _filbuf主要是调用了_read(_fileno(stream), stream->_base, stream->_bufsiz) 而_read最终则是调用了Win32API ReadFile,以下是用WinDbg输出的getchar的调用栈: # ChildEBP RetAddr 00 0012fe6c 0040a4e7 kernel32!ReadFile 01 0012fea8 0040a3b9 TestStruct!_read_lk+0x107 [read.c 146] 02 0012fec0 00403140 TestStruct!_read+0x69 [read.c 75] 03 0012fee8 00401290 TestStruct!_filbuf+0xd0 [_filbuf.c 127] 04 0012ff08 004012cc TestStruct!fgetc+0x80 [fgetc.c 44] 05 0012ff14 0040103d TestStruct!getc+0xc [fgetc.c 56] 06 0012ff20 00401058 TestStruct!_fgetchar+0xd [fgetchar.c 37] 07 0012ff28 0040101e TestStruct!getchar+0x8 [fgetchar.c 47] 08 0012ff80 0040115c TestStruct!main+0xe [d:\my programs\teststruct\ts.cpp 4] 09 0012ffc0 7c816fe7 TestStruct!mainCRTStartup+0xfc [crt0.c 206] 0a 0012fff0 00000000 kernel32!BaseProcessStart+0x23 可见,getchar最终调用了ReadFile。

关于ReadFile的原理以及缓冲区在哪里,请你再提一个问我再回答

C语言里如何设置缓冲区

将数据以链表形式顺序存放,新数据总是放在表尾,待处理的数据总是在头结点下的第一个结点,处理完毕则释放空间。

#define BufferSize 1024 // 合适的大小你知道的

typedef struct node {

char *buffer;

struct node *next;

}*linkList;

LinkList *InitList() {

LinkList *head;

head = (char *)malloc(size(node));

head->next = NULL:

return head;

}

void AddData(LinkList *head, char *data) { // 将新数据添加到表尾

LinkList *p = head;

LinkList *anode = (char *)malloc(size(node));

anode->buffer = (char *)malloc(size(BufferSize));

strncpy(anode->buffer,data,BufferSize);

anode->next = NULL:

while(p->next) p = p->next;

p->next = anode;

}

void DealData(LinkList *head) {

LinkList *p = head->next;

if(p) {

head->next = p->next;

// p->buffer指向的数据待处理

free(p->buffer); // 处理完毕,释放空间

free(p);

}

}

本文地址:https://www.39baobao.com/show/29_46587.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

小猫在哪里语言教学反思活动目标: 1、引导幼儿学说介词在;方位词:上、下、里、后、旁、能用完整话我在……上(下、里、后、旁)、幼儿喜欢参与游戏 活动准备: 故事背景图、小猫的图片、歌曲、在教室布置好...

大班语言教案爱在哪里活动目标: 1、在幼儿对风有感性基础上,了解风的自由,感受诗歌的美。 2、激起编诗歌的愿望,尝试使用诗歌的语言来进行创编,鼓励幼儿能在同伴面前大胆表现自己。活动重点: 幼儿能够...

c语言运行中断如何看哪里错误首先,编程错误有逻辑错误和语法错误,不同错误的查看方式不同。 语法错误在在程序编译时编译器会报错,编译不能通过,此类错误如:变量使用时尚未定义,符号错误等等。可以根据编译器...

C语言电文破译题目和我编写的程序如下请大神指出我错在哪里你没有处理第一个数据……人家第一个数据是总的测试个数……你读到哪里去了?? #include #include void Decrypt(char &c) { if ( c >= 'a' & c <= 'z' ) { c = 'z' - (c - 'a'...

电脑语言设置在哪里一、首先从电脑桌面左下角的“开始”菜单中,找到“控制面板”,并点击进入,如下图所示: 进入电脑控制面板 二、进入控制面板之后,我们再点击进入“更改显示语言”设置选项,如下图...

语言:小猫在哪里活动名称: 活动目标: 1.初步学习方位词:上、下、里,练习发准床(chuáng)、上(shàng)字音。 2.通过观察画面上小猫所在的位置,能用“小猫在**上面(下面、里面)”的短句讲述画面内容。 3...

英汉语言差异体现在哪里1、汉语习惯用主动,英语习惯用被动语态。比如说,我们会说“别人爱我”,而不是说“我被爱了。”(英语中为了不说明动作的执行者通常用被动语态。) 2、汉语习惯用类似“我”等人称,...

在汇编语言中怎么加入C语言第一题 直接嵌入汇编代码的方法: 1、在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码: #pragma ASM ; Assembler Code Here #pragma ENDASM 2、在 Project 窗口中包含汇编...

C语言 C语言 C语言简介C语言 C语言 C语言简介,C语言简介:C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程...