平常写代码的时候经常会因为字符与字符串的输入输出问题出现很多错误,于是干脆整理一下教材中基础的输入与输出函数(教材:C程序设计(第三版) 谭浩强),简单的做一个测试,包括正确的输入和非法的输入。只是最基础的部分,有详细的代码注释和测试结果,有问题可以互相讨论,毕竟不是C语言大神,还只是学习阶段。
/*
软件:Dev-C++5.11
系统:win7
测试字符、字符串的输入输出函数
每一对输入输出时都是将其余输入输出代码注释掉,独立测试
null为空格
*/
#include<stdio.h>
int main(){
char a;
char b='c'; //若写为b='cd',报错: In function 'int main()':
char c=' ';
char str1[12]="Hello World";
char str2[15];
//scanf与printf的使用
scanf("%c",&a); //1.若不加&,不报错,运行输入后程序崩溃;2.若将%c写为%s,除【输入:回车-输出:无输出】外,其他两者相同
printf("%c\n",a);
/*
输入:a ab 1 12 回车
输出:a a 1 1 null
*/
scanf("%s",str2); //1.若不加&,在这里输入输出好像无影响,但在更复杂的程序中不确定;2. 若将%s写为%c,则【输入:任意字符串-输出:字符串第一个字母】
printf("%s\n",str2); //若将%s改为%c【输入:任意字符串-输出:0】
/*
输入:abc qwertyuiopasdfgh
输出:abc qwertyuiopasdfgh
*/ //越界对输入输出无影响
printf("%c,%c,%c.\n",a,b,c);
//输出:null,c,null.
//printf("%s\n",b);
//不报错,程序崩溃
printf("%s,%s.\n",str1,str2);
//输出:Hello World,随机
printf("%c\n",str1[0]);
/*
[]: 0 11 >11
输出:H null 随机
*/ //及对数组越界不做检查
//getchar与putchar的使用
putchar(b);
//输出:c
printf("\n");
putchar(c);
//输出:null
printf("\n");
a=getchar();
putchar(a);
/*
输入:c ab 1 12 回车
输出:c a 1 1 null
*/
printf("\n");
a=getchar();
a=getchar();
putchar(a);
/*
输入:c,回车 a,b a,b,c 回车,c
输出:null b b c
*/
printf("\n");
//putchar输出后不会自带换行
//puts与gets的使用
puts(str1);
//输出::Hello World
puts(str2);
//输出:随机
//puts(str1,str2); 报错:[Error] too many arguments to function 'int puts(const char*)'
gets(str2);
//gets(str1,str2); 报错:[Error] too many arguments to function 'char* gets(char*)'
puts(str2);
/*
输入:abc qwertyuiopasdfghj
输出:abc qwertyuiopasdfghj
*/ //无边界检查
//puts输出自带换行
}