04-输入输出

来源博客园   2023-05-19 04:58:19


(资料图)

输入输出1.字符输出函数

c语言中没有I/O语句,I/O操作由函数实现

#include 
1.1 字符输出函数 - putchar
格式:putchar(c)参数:c为字符常量\变量\表达式功能:把字符c输出到显示器上返回值:正常,为显示的代码值ASCII码
#include int main(){  int a = 65;  char ch = "B";  putchar(a); // int值 -- 显示A  putchar("\n"); // 字符 -- 显示换行  putchar(ch); // 字符 -- 显示B    return 0;}
1.2 格式输出函数
printf("格式控制串",输出表)功能:按照指定格式向显示器输出数据输出表:要输出的数据格式控制串:包含两种信息  格式说明:%[修饰符]格式字符,用于指定输出的格式  普通字符:原样输出
#include int main(){  int a = 255;  char ch = "C";  char s[] = "sdfsdf";      float fl = 567.534;   printf("%d %o %x\n",a,a,a);  printf("%c %d\n",ch,ch); // %c 打印字符  %d 打印字符ascii码值     printf("%s\n",s);  printf("%f %e %g\n",fl,fl,fl);    printf("%%"); // 打印一个%  return 0;}
1.3 附加格式说明符
m.nint a = 1234;float b = 123.456;char ch = "a";printf("%8d,%2d\n",a,a); // 8d指的是数据位宽m ,不够左侧补空格                          // 位宽 < 实际位数,原样输出                          // printf("%8f,%8.1f,%.2f\n",f,f); // .n表示保留小数 printf("%3c",ch); // 补充空格char s[] = "Hello,World!";printf("%15s\n",s); // 字符串打印15个字符长度,不够左侧补空格printf("%15.5s\n",s); // 要打印15个,打印5个字符printf("%2.5s\n",s); // 2 < 12(实际长度,原样输出),打印5个字符 printf(".5s\n",s);  // 
0 + 0 -- 用0填充+ -- 整数显示加号int a = 1234;float b = 123.456;char ch = "a";printf("%08d %0+8d\n",a); // 8d指的是数据位宽m ,不够左侧补0                          // + 表示正数的时候添加加号                     printf(%08.1f\n",f); //  printf("%3c",ch); // 补充空格
2.字符输入函数2.1 字符输入函数 -- getchar()
getchar()  --格式:getchar()  --功能:从键盘读取一个字符  --返回值:正常,返回读取的ASCII码值;出错或者结束输入,返回-1(用int接收)    ctrl d返回-1,表示结束输入
#include int main(){  int ch;  printf("input:")  ch = getchar();  putchar(ch);  // 输入什么字符显示什么字符  putchar("\n");  printf("ch = %d\n",ch); // 结束键盘输入的时候显示-1  return 0;}
2.2 格式输入函数 scanf
scanf("格式控制串,地址表")功能:按照指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束  格式控制串可以表示输入的是多少进制的数返回值:正常,返回输入数据的个数地址表:变量的地址,常用取地址运算符&
#include int main(){    int ch,n;  printf("Enter a character:");    n = scanf("%d",&ch); // 输入65    printf("%d\n",ch);  // 打印65  printf("n = %d\n",n); // n小于输入变量的个数表示输入失败      return 0;}

修饰符

#include int main(){    int ch,n;  // long m;   int y,m,d  printf("Enter a character:");    n = scanf("%x %ld",&ch,&m); // 输入 21 5    // printf("n = %d\n, %d %ld",n,ch,m); //2 33 5       scanf("%4d%2d%2d",&y,&m,&d); // 20221213                                 // 4d 表示位宽 -- 自动将输入的前四位给y   printf("%d %d %\n",y,m,d);// 2022 12 13  return 0;}
* -- 抑制符,输入的值不赋值给变量scanf("%2d%*3d%2d",&a,&b);  // 1234567  a = 12 b = 67 中间取到值不给变量
// 字符型变量连续输入#include int main(){  char y,m,d;    scanf("%c%c%c".&y,&m,&d);    printf("%d:%d:%d\n",y,m,d);                              // 输入abc 打印97:98:99                              // a  b c  97:32:32                              // 字符型变量在进行连续输入的时候,空格和转义字符是有效字符                              // 数值型进行连续输入的时候空格不是有效字符  return 0;}

总结:整型数据输入的时候,遇到空格\会出\TAB都认为是数据结束,此外,非法输入(整型输入字母)和遇到宽度也表示结束

scanf("%d%c%f",&a,&b,&c);输入:1234a123o.26a = 1234 b = "a" c = 123
3.输入函数留下的"垃圾"
int a ;char x;printf(">");scanf("%d",&a);scanf("%c",&x);printf("%d:%c:%d\n",a,x,x);  // 输入5,然后回车,打印 5:回车:10                             // 回车会赋值个x
// 方法1:使用getchar清除int x;char ch;scanf("%d",&x);getchar()ch = getchar();printf("x = %d,ch = %d\n",x,ch);// 方法2:使用空格%c或者%*c接收字符型数据int x;char ch;scanf("%d",&x);// scanf(" %c",&ch);scanf("%*c",ch);printf("x = %d,ch = %d\n");
4.字符串输入输出函数4.1 字符串输入函数-gets
gets  格式:char * gets(char *s)  功能:从键盘输入一个以回车结束的字符串放入字符数组中,并且自动加入"\0"  说明1:输入串长度应小于字符数组长度  说明2:与scanf函数不同,gets函数并不以空格作为字符串输入结束的标志
char s[5];  // 定义长度为5的字符数组用于存储字符串,只能存储4个gets(s);    // 输入字符串printf("%s\n",s) // 打印字符串// 用户输入字符串的长度超过字符数组的长度,会报错// 这个函数是有风险的
char s[5];scanf("%s",s); // 空格会作为分割符结束,可以用循环,使用%c存储空格printf("%s\n",s);
4.2 字符串输出函数-puts
char s[5];gets(s); printf("s:%s",s); // printf() 默认不换行printf("***\n");puts("$$$$"); // 自动换行puts(s);  
puts  格式:int puts(const char *s)  功能:向显示器输出字符串(输出完,换行)  说明:字符数组必须以"\0"结束
#include #include int main(){  int a,b,c;  int delt;  float result1,result2;    scanf("%d%d%d",a,b,c);    delt = b*b-4*a*c;  result1 = [(-b)+sqrt(delt)]/(2*a);  result2 = [(-b)-sqrt(delt)]/(2*a);  printf("result1 = %f,result2 = %f\n",result1,result2);  return 0;}

猜你喜欢