输入输出IO


tips1:

默认的时候,cin与stdin总是保持同步的,也就是说这两种方法可以混用,而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输出顺序错乱。正因为这个兼容性的特性,导致cin有许多额外的开销。

ios_base::sync_with_stdio(false);

tips2:

使用文件流改为输入流的方式提高测试效率:

freopen("test.txt","r+",stdin);

  1. getchar(),gets(char str[])都无法解决\n的问题

  2. 如果输出必须为N位数,前面需要动态补充为0的话怎么办?
    printf("%05d",t); // 输出五位数
    要求输出为小数点后N位数的话怎么办?
    printf("%.5d",t);


题目中的输入输出:

输入不知道多少组数据时:

while(scanf("%d",&a)!=EOF){
    ......
}

while(gets(str)!=NULL){
    ......
}

读取空格间断的数组:

输入格式为: 0 4 2 1 5 时怎么读取为数组?

    while(scanf("%c",&k)){
        if(k=='\n'){
          break;
        }
        if(k!=' ')
        {
            input[i]=k-'0';
            i++;
        }
    }

如果空格数量不定,而且数字也可能是多位数怎么办?

#include<stdlib.h>    // 必须导入,这样才能用atoi函数

    char key[10];   // 临时存放输入;
    char detect;    // 检测回车 '\n' 
    while(scanf("%s",&key)){
        input[i]=atoi(key);     //  字符串转数字
        i++;
        
        // 获取后面的一个输入缓存检测是否是 '\n'
        detect=getchar();
        if(detect=='\n'){
            break;    
            // 跳出循环
        }
    }

如果想把空格也读取进去怎么办?

char input[N];
cin.getline(input,N);
string s=input;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容