码迷,mamicode.com
首页 > 编程语言 > 详细

C语言输入输出的基础知识及strlen、memset的用法

时间:2014-11-16 17:20:35      阅读:453      评论:0      收藏:0      [点我收藏+]

标签:scanf   printf   c标准输入输出   strlen   memset   

printf

printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)
printf 函数的一般形式为:
int printf(const char *format,[argument]);
格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

用法

以下程序用于获得输入值i,j并将其输出(i,j之间以逗号隔开)
#include<stdio.h>
int main()
{
int i,j;
scanf("%d,%d",&i,&j);
printf("i=%d;j=%d",i,j);
return0;
}
以下程序用于输出“百度百科”
#include<stdio.h>
int main()
{
printf("百度百科");
return0;
}

通常意义上format的格式如下:
%[flags][width][.prec][F|N|h|l]type

Hap环境变量

下列环境变量影响 printf 命令的执行:
LANG 在 LC_ALL 和相应的环境变量(以 LC_ 开头)没有指定语言环境时,确定语言环境编目使用的语言环境。
LC_ALL 确定用于覆盖由 LANG 或其它任何 LC_环境变量设置的任何语言环境编目值的语言环境。
LC_CTYPE 确定把文本字节数据顺序解释为字符的语言环境;例如,单一字节对应多字节字符的参数。
LC_MESSAGES 确定写消息使用的语言。
LC_NUMERIC 确定数字格式编排的语言环境。此环境变量影响使用 e、E、f、g 和 G 转换字符编写的数字的格式。

Unix命令行程序和内建指令(更多)

文件系统
? cat ? cd ? chmod ? chown
? chgrp ? cksum ? cmp ? cp
? du ? df ? fsck ? fuser
? ln ? ls ? lsattr ? lsof
? mkdir ? mount ? mv ? pwd
? rm ? rmdir ? split ? touch
? umask      
 
程序
? at ? bg ? chroot ? cron
? exit ? fg ? jobs ? kill
? killall ? nice ? pgrep ? pidof
? pkill ? ps ? pstree ? sleep
? time ? top ? wait  
 
使用环境
? env ? finger ? id ? logname
? mesg ? passwd ? su ? sudo
? uptime ? w ? wall ? who
? whoami ? write    
 
文字编辑
? awk ? comm ? cut ? ed
? ex ? fmt ? head ? iconv
? join ? less ? more ? paste
? sed ? sort ? strings ? talk
? tac ? tail ? tr ? uniq
? vi ? wc ? xargs  
 
Shell 程序
? alias ? basename ? dirname ? echo
? expr ? false ? printf ? test
? true ? unset    
 
网络
? inetd ? netstat ? ping ? rlogin
? netcat ? traceroute    
 
搜索
? find ? grep ? locate ? whereis
? which      
 
杂项
? apropos ? banner ? bc ? cal
? clear ? date ? dd ? file
? help ? info ? size ? lp
? man ? history ? tee ? tput
? type ? yes ? uname ? whatis

scanf

printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
函数原型
int scanf(const char*format,...);
函数 scanf() 是从标准输入流stdio (标准输入设备,一般是键盘)中读内容的通用子程序,可以说明的格式读入多个字符,保存在对应地址的变量中。
其调用形式为: scanf("<格式说明字符串>",<变量地址>);变量地址要求有效,并且与格式说明的次序一致。
scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
如:
1
scanf("%d%d",&a,&b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF
且返回值为int型.
注意问题
(1) 对于字符串数组或字符串指针变量,由于数组名和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符
(2) 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。
(3) scanf()函数中没有精度控制。
         如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。
(4) scanf中要求给出变量地址,如给出变量名则会出错
          如 scanf("%d",a);是非法的,应改为scanf("%d",&a);才是合法的。
(5) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。
         C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。
(6) 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
例如:
scanf("%c%c%c",&a,&b,&c);

        输入为:
d e f

        则把‘d‘赋予a, ‘ (空格)‘赋予b,‘e‘赋予c。因为%c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此把‘ ‘作为下一个字符送给b。
只有当输入为:def 时,才能把‘d‘赋于a,‘e‘赋予b,‘f‘赋予c。 如果在格式控制中加入空格作为间隔,
scanf("%c %c %c",&a,&b,&c);
         则输入时各数据之间可加空格。
          scanf标准输入的一些问题:
  1. 如何让scanf()函数正确接受有空格的字符串?如: I love you!
  2. 键盘缓冲区残余信息问题
  3. 输入类型与格式化字符串不匹配导致stdin流的阻塞。
  4. 如何处理scanf()函数误输入造成程序死锁或出错
补充
fflush(stdin)这个方法在GCC下不可用。(在VC6.0下可以)



C语言输入输出的基础知识及strlen、memset的用法

标签:scanf   printf   c标准输入输出   strlen   memset   

原文地址:http://blog.csdn.net/txl199106/article/details/41174013

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!