这样可以让c语言编写的程序跨平台运行.即分别在linux和windows下编译,得到各自对应的可以运行的程序.提高程序的可移植性.
公司主营业务:做网站、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出比如免费做网站回馈大家。
同时,不同的公司出的编译器,对函数实现本来就不一样.
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int scanf(const char *format, arg_list)
scanf主要从标准输入流中获取参数值,format为指定的参数格式及参数类型,如scanf("%s,%d",str,icount);
它要求在标准输入流中输入类似"son of bitch,1000"这样的字符串,同时程序会将"son of bitch"给str,1000给icount.
scanf函数的返回值为int值,即成功赋值的个数,在上例中如果函数调用成功,则会返回2,所以我们在写程序时,可以通过
语句if(scanf("%s,%d",str,icount) != 2){...}来判断用户输入是否正确.
int printf(const char *format, arg_list)
printf主要是将格式化字符串输出到标准输出流中,在stdio.h头文件中定义了标准的输入和输出,分别是stdin,stdout.
arg_list可以是变量名,也可以是表达式,但最终都会以值的形式填充进format中.
int getc(FILE *fp)
getc主要是从文件中读出一个字符.常用的判断文件是否读取结束的语句为:(ch = getc(fp)) != EOF.EOF为文件结束标志,
定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin
时,getc(stdin)就等同于getchar()了.
int putc(int ch,FILE *fp)
putc主要是把字符ch写到文件fp中去.如果fp为stdout,则putc就等同于putchar()了.
int getchar(void)
getchar主要是从标准输入流读取一个字符.默认的标准输入流即stdio.h中定义的stdin.但是从输入流中读取字符时又
涉及到缓冲的问题,所以并不是在屏幕中敲上一个字符程序就会运行,一般是通过在屏幕上敲上回车键,然后将回车前的字符
串放在缓冲区中,getchar就是在缓冲区中一个一个的读字符.当然也可以在wh
c语言是没法把字符串转换成对应函数的,c语言是结构化语言,程序怎么执行在编译时已经确定,没法像c#之类的托管代码高级语言能够动态绑定或者叫后期绑定。因为托管代码有运行时去选择执行,而c语言编译后的可执行文件为操作系统直接调用了,所以没法动态绑定。
我想可以这样回答:输入输出功能的实现直接依赖于机器硬件,如果把输入输出功能作为语句的基本部分,则生成的可执行程序无法在具有不同指令系统的机器上运行。而把输入输出功能作为库函数由头文件提供,这就灵活多了,即在具有不同指令系统的机器上运行的C编译器,其输入输出函数的机器码也有所不同。
——不知正确与否,仅供参考。
因为输入和输出都是比较烦琐的事情,不要把输入和输出认为那么简单.
因为涉及到键盘和显示器两个设备.一些底层东西程序员直接使用容易出错.而且对系统也不好.
所以都给封装成了函数 例如最典型的API.
这样程序员就不必考虑那么多问题,只需要了解函数的作用和参数就够了.
也就是操作系统和API函数打交道.而我们只需要和API函数通话就够了.
以上是我个人的经验和见解.如果有不对的地方请指出.