输入输出格式总结

C语言

  • scanf除了%c以外,对其他格式符的输入是以空白符(空格,TAB,回车)作为结束标志
  • 因此scanf除非%c把空格按字符读入,其他情况会跳过空格

  • %c 可以接收空格,tab,回车

  • 字符串使用%s读入时,是以空格和换行作为读入结束标志

  • 使用getchar,putchar输入输出单个字符

    • getchar可以识别换行符,所以敲回车的时候如果后面有getchar就会被存进去
  • 2#3 这种有格式的输入,不要忘记scanf里面要保持这个格式

  • gets用于输入一行字符串,puts用于输出字符串,并外加了一个换行

    • 如果gets前面还有一个scanf或者cin ,记得用getchar吸收
  • 实用输出格式

    //%md  超过或等于m位保持原样,不足m位,高位用空格补齐
    printf("%5d");
    //%0md  超过或等于m位保持原样,不足m位,高位用0补齐!!!!!!非常好用
    printf("%05d");
    //%.mf  保留m位小数输出
    printf("%.5f");

    C++

  • 控制输出位数

#include<iomanip> //控制时要加入这个头文件
cout << setiosflags(ios::fixed)<<setprecision(2)<<123.4567<<endl;//控制输出位数
  • string 只能用cin,cout 输入输出
  • 2#3 这种有格式的输入,可以另外一个char变量,cin>>ch吸收它
  • getline 用于输入一整行字符串
    • 如果getline前面还有一个scanf 或者cin ,记得用getchar吸收
//string类型
string str;
getline(cin, str);
//char *类型
char s[20];
cin.getline(s, 20);
  • 使用map时,字符串到整型映射,必须用string

案例

//输入格式:字符串1 字符串2 字符串3 ...数量未知
//输入格式:数字1 数字2 数字3 ...
//这种限于后面没有其他输入了
//这也是输入多组数据,组数未知的方式
while(scanf("%s")!=EOF){
    
}
/*
输入格式:
123 [数字]
aa bb cc [是一个整体的字符串]
字符串1 字符串2 字符串3 ... [组数未知的多组字符串]
1998 [数字]
*/
//c++
cin>>id;
getchar();  //注意!!
getline(cin,str1);
while(cin>>str2){
    ...
    char ch = getchar();
    if(ch == '\n') break; //注意!!
}
cin>>num;
//c语言
scanf("%d",&n);
getchar(); //注意!!
gets(str);
while(scanf("%s",str2)!=EOF){
    ...
    char ch = getchar();
    if(ch == '\n') break;
}
scanf("%d",&num);

猜你喜欢

转载自www.cnblogs.com/doragd/p/11315191.html