• ACM 基本输入


    单次输入

    C语言

    int a,b;
    
    scanf("%d %d",&a,&b);
    

    C++语言

    int a,b;
    cin >> a >> b;
    

    循环输入

    C语言

    int a,b;
    
    while(scanf("%d %d",&a,&b)!=EOF){
    
    };
    

    C++语言

    int a,b;
    
    while(cin >> a >> b){
    
    };
    
    

    输入字符串

    cin 遇到 ' ' 或者 ' ' 结束输入。
    getline 总是从第一行开始读取字符串,不管是否已经执行过 cin >> a; 之类的语句

    输入一整行字符串

    C语言

    char ch[100];
    
    gets(ch);
    

    C++语言

    char ch[100];
    
    cin.getline(ch);
    
    // or
    string str;
    
    getline(cin,ch);
    

    助记: 两个 getline 都需要 cin,一个放外面,一个放里面

    输入空格分隔的字符串

    C语言

    char str[100];
    
    scanf("%s", str);
    

    注意点:scanf 从输入流中获取字符串的时候范围是 [结束符,结束符),读取后将首部的结束符去掉后传给字符串变量。另,结束符可以是多个连续空格
    测试案例如下:

    #include<stdio.h>
    
    int main(){
    	
    	char str[20]; // 输入 "
    
    notReadEnterOrSpace
    "
    	char ch;
    	scanf("%s",str); //得到 " notReadEnterOrSpace" ,scanf 读取字符串忽略前后回车或空格
    	ch = getchar();
    	printf("%s
    ",str);
    	
    	// 输入流中连续字符串之后的空格或回车不再读取
    	if (ch == '
    ') {
    		printf("\n");
    	}else if (ch == ' '){
    		printf("_");
    	}
    	printf("
    ");
    }
    

    注意点: gets 从输入流中获取字符串的时候范围是 (结束符,结束符],读取后将尾部的结束符去掉后传给字符串变量。附带说明一点,getchar 读取到文件结尾时其值为 xff 即 ascII 码中 255 的 16 进制表示,其打印值为 8 进制的 377

    测试案例如下:

    #include<stdio.h>
    
    int main(){
    	
    	freopen("/Users/apple/Desktop/input.txt", "r", stdin);
    	char str[20];
    	char ch;
    	gets(str);
    	ch = getchar();
    	printf("%s
    ",str);
    	
    	if (ch == '
    ') {
    		printf("\n");
    	}else
    		printf("%c",ch);
    	
    	printf("
    ");
    }
    /*/
    测试一:读取空行
     
    input:
    ###
    
    notReachHere
    ###
    
    output:
    ###
    
    h
    ###
    测试二:读取单行
    
    input:
    ###
    getThisLine
    ###
    ouput:
    ###
    getThisLine
    377
    ###
    
    测试三:读取单行,文件未到结尾
    
    input:
    ###
    getThisLine
    anotherLine
    ###
    ouput:
    ###
    getThisLine
    a
    ###
    */
    

    C++语言

    见下一节:输入用某个符号分隔的多个字符串。

    输入用某个符号分隔的多个字符串

    C语言

    char str1[100],str2[100];
    
    scanf("%s%s",str1,str2);//字符串之间用一个或多个空格分隔
    gets(str1);gets(str2);//字符串之间用一个换行符分隔
    

    C++语言

    char str1[100],str2[100];
    
    cin.getline(str1,100,'*');cin.getline(str2,100,'*');//字符串之间用一个'*'分隔
    
    

    限制输入长度或以某个字符作为结尾

    C++语言

    char str1[100];
    cin.getline(str1,100,'*');//限制长度为100,如果想提前结束就用'*'作为结束符号
    
    string str;
    
    getline(cin,str,'*');// 以'*'为结束符号
    
  • 相关阅读:
    【LOJ】#3034. 「JOISC 2019 Day2」两道料理
    vue学习笔记(七)组件
    vue学习笔记(五)条件渲染和列表渲染
    vue学习笔记(一)入门
    JavaScript学习总结之函数
    JavaScript学习总结之对象的深拷贝和浅拷贝
    javascript学习总结之Object.assign()方法详解
    ES6学习总结之变量的解构赋值
    ES6学习总结之let和const命令
    javascript学习总结之Object.keys()方法详解
  • 原文地址:https://www.cnblogs.com/tangyikejun/p/4234965.html
Copyright © 2020-2023  润新知