C语言输入输出函数

格式化输出函数:printf

(一)、输出格式:整型和短整型:%d    长整形:%ld    浮点型:%f    双精度型:%lf    输出地址:%p    换行:\r、\n
(二)、printf的行缓冲:
1、int main()
{
    printf("hello world");
    while(1);
}   
上面的程序并不能输出,原因是printf在遇到\n才会输出。
2、
int main()
{
    printf("hello world");
    
    return 0;
}
此情况也会输出,原因是函数结束需要释放内存空间
3、
int main()
{
    printf("hello world");
    scanf("%s",str);
    while(1);
}  
此情况也会输出,因为scanf和printf处于同一缓存区,要将printf先释放


综上,输出printf最好加一个\n


printf的一些使用技巧
1、可以 修改字体颜色
2、选择地点打印等等


其他一些输出函数

1、putchar:putchar("\n");    回车    putchar不自动换行
2、puts:puts(str)    puts有自动换行功能
3、putc:putc(ch,stdout),将ch输出至终端


格式化输入函数scanf

(一)、为什么叫格式化?
比如:scanf("num = %d",&num),在输入的时候,要输入 num = 5,就死一定要按照他的格式来输入。
(二)、scanf的小问题:
int main()
{
   ……
    scanf("%d",&num);
    scanf("%c",&ch);
}  
这是如果界面上显示让你输入,程序并不会停下来让你输入第二个字符,因为第二个scanf捕获了回车,但是如果反过来的话就可以,因为\n是一个字符,而%d是一个整型,所以会停下来等待输入
可以这样解决上面的问题:
int main()
{
   ……
    scanf("%d",&num);
    getchar();
    scanf("%c",&ch);
}
用getchar将\n吸收掉即可


第二的小问题:
如果在程序中有:
scanf("%lf",&b);
printf("%f",&b);
那么会输出乱码,因为在输入时,系统给b分配八个字节的空间,而输出只有四个字节


字符串的处理

(一)、如果有此程序:
char *ptr;
printf("Please input a string:");
scanf("%s",ptr);
是不行的,因为ptr并没有赋予它首地址,它是一个野指针
(二)、输入字符串的三种方法:
1、
char ptr[100];
printf("Please input a string:");
scanf("%s",ptr);
此方法缺点:不能有空格,不能输入句子
2、
char ptr[100];
printf("Please input a string:");
gets(ptr);
此方法缺点:会造成溢出
3、
while((ch = getchar()) != '\n')
{
    ptr [i] = ch;
    i ++;
    if(i == 100)
        break;
}
此方法缺点:效率低下
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值