c的IO
部分内容来自http://www.programfan.com/article/2674.html以及http://www.programfan.com/article/showarticle.asp?id=2675
部分翻译来自TUM skript(c programmieren);
1.printf():
千万不要遗忘在printf()的最后添加NewLine"\n"。因为在c的库中通常有行缓存机制,这个意味着只有当一行的输入通过"\n"结束之前,行的数据将会被缓存,之后才会显示出来。
格式:
% <输出最小宽度>.<小数位> 类型
‘-’号为左对齐
2.scanf():
行输入的结束是根据Enter(Carriage Return)来确定的;
注意scanf要传引用,而对于数组而言传数组名/指针名即可,本身就是引用;
int iA[10]={...};
scanf("%10d", iA);
对于scanf而言也存在缓存机制,所有合适当前输出流格式的字符将从缓存中取出知道出现不合适的字符位置,下一次scanf将继续读未读完的缓存字符,只有当这次的scanf缓存中的数据完全结束后,才能再启动新的scanf缓存。
ex.1
int a=2,b=2;
scanf("%d",&a);
scanf("%d",&b);
//如果输入
//11.75
//5
则最后出现的是a的值为11,而b的值因为"."并不是%d类型的所以scanf不能继续读缓存中的值,所以b的值将不被改变
最后的输出时 a=11,b=2;
ex.2
scanf("%c%c%c",&a,&b,&c);
//输入为:
//d e f
//则把'd'赋予a, ' '赋予b,'e'赋予c。只有当输入为:
//def时才是正确的
scanf的双引号内部可以设置格式符号例如空格以及tab等,但同时输入也要按照这个格式,否则要出现错误。
3.getchar()
完整的函数式为:int getchar(void);
读入的为一个个字符,返回值为字符ascii码。
getchar函数getchar函数的功能是从键盘上输入一个字符。其一般形式为: getchar(); 通常把输入的字符赋予一个字符变量,构成赋值语句,如:
char c;
c=getchar();#include<stdio.h>
void main(){
char c;
printf("input a character\n");
c=getchar();
putchar(c);
}
使用getchar函数还应注意几个问题:
1.getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。
2.使用本函数前必须包含文件“stdio.h”。
4.putchar()
完整的函数式为:int putchar(int c);
一个个字符的输出;
#include<stdio.h>
#include <stdio.h>
void main(){
char a
相关文档:
C 语言的面向对象
如前所说,面向对象是一种软件设计的思想,是语言无关的。在本节中,我举一个链表(list) 的例子来说明如何在 C 语言中的设计出有面向对象风格的代码。
定义接口
接口是面向对象语言中的一个比较重要的概念,接口只对外部承诺实现该接口的实体可以完成什么样的功能,但是不暴露实现的方式。这样的好处是 ......
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可
以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员
按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个 ......
作者:石头
extern "C"包含双重含义,其一:被它修饰的目标是“extern”的;其二:被它修饰的目标是“C”的。
1)被extern “C”限定的函数或变量是extern类型的;
extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函 ......
//库函数实现
char *strcat (char *dst, const char *src)
{
char *p = dst;
while (*p)
p++;
while ((*p++ = *src++))
;
return dst;
}
char *strncat (char *s1, const char *s2, long unsigned int n)
{
char *dest = s1;
  ......
栈主要用来存放局部变量, 传递参数, 存放函数的返回地址.esp 始终指向栈顶, 栈中的数据越多, esp的值越小.
堆用于存放动态分配的对象, 当你使用 malloc , new 等进行分配时,所得到的空间就在堆中. 动态分配得到的内存附带有分配信息, 所以你能够 realloc 和 free调它们.
全局,静态和常量是分配在数据区中的。数据区包括b ......