字符串输入输出_输入一个字符串,对字符串进行压缩并输出压缩后的字符串。 - CSDN
精华内容
参与话题
  • 字符、字符串输入输出scanfprintfgetcharscanf与getchar的区别putchargetsfgetsputscin与coutgetlinecin.getline scanf 不接受空格,回车结束输入 scanf("%c",&a); 读取标准输入流中的第一个字符,包括空格...

    scanf

    不接受空格,回车结束输入

    • scanf("%c",&a);
      读取标准输入流中的第一个字符,包括空格、换行符等,按回车键结束输入
    • scanf("% c",&a);
      屏蔽空白字符,读取标准输入流中的第一个非空白字符,按回车键结束输入
    • scanf("%s",a);
      读取一个字符串
      (1)遇到空白字符输入结束;
      (2)达到指定宽度【如:scanf("%10s",a);】,读取10个字符后输入结束。

    printf

    • printf("%c",ch);
      输出一个字符,包括空格
    • printf("%s",str);
    • 输出字符串,遇’\0’结束

    getchar

    接受空格,回车结束输入,换行符会保存在缓冲区

    • 格式:char a=getchar();
      从键盘上读入一个字符,并带回显。(读取空白字符、换行符)

    getchar()函数等待输入直到按回车才结束,回车前的所有输入字符都会逐个显示在屏幕上,但只有第一个字符作为函数的返回值。

    函数原型:int getchar(void);
    功能:从标准输入里读取下一个字符,相当于getc(stdin)。
    返回值:返回类型为int型,为用户输入的ASCII码,出错返回-1。

    scanf与getchar的区别

    • 读取方式不同
      scanf函数在读取字符时会跳过空格、制表符和换行符。
      getchar函数只能输入字符型,输入时遇到回车键才从缓冲区依次提取字符。

    • 结束输入的方式不同
      scanf函数以空格、Enter、Tab结束一次输入,不接受空格符。
      getchar函数以Enter结束输入(空格不结束),接受空格符。

    • 舍弃回车符的方法不同
      scanf函数以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中)。
      getchar函数以Enter结束输入时,接受空格,会舍弃最后的回车符。

    putchar

    接受空白字符、换行符

    • 格式:putchar(c);
      作用:输出一个字符,包括空格、换行符
      c可以是一个char型变量,可以是一个int型数(0<=c<=127),也可以是一个被单引号引起来的字符【如:putchar(‘A’)】

    函数原型: int putchar(int ch);

    getchar与putchar的使用
    
    #include<stdio.h>
    int main()
    {
        /*----输入2(回车)----*/
        char a;  //接受‘2’
        a=getchar();
        putchar(a);
        char b;
        b=getchar();   //接受‘回车符’
        putchar(b);
        return 0;
        /*----输出2(回车)----*/
    }
    
    

    gets

    接受空格,回车键结束输入

    • gets(字符指针);
      可以无限读取,直至接受到换行符或EOF时停止。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。

    函数原型:char *gets(char *string);

    PS:(1)因为gets不限制输入字符个数,因此容易造成程序崩溃,可使用fgets代替;(2)在GCC中使用gets(),编译无法通过;

    fgets

    • fgets函数的调用形式:fgets(str,n,fp);
      fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。
    • 函数的功能:从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。
    • 调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加’\0’,并以str作为函数值返回。
    • 函数原型:char *fgets(char *buf, int bufsize, FILE *stream);
      *buf: 字符型指针,指向将存储到的数据地址。
      bufsize: 整型数据,指明buf指向的字符数组的大小。
      *stream: 文件结构体指针,将要读取的文件流。

    fgets读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题

    puts

    输出空格与换行符,遇到’\0’停止输出

    • 调用方式:puts(s) ;
      puts()显示字符串是自动在其后添加一个换行符,puts()遇到空字符(’\0’)时,输出停止,所以确保有空字符存在否则直到发现一个空字符为止 
      put函数的应用
    #include <stdio.h>
    #include <conio.h>//getch()的头文件
    int main(void)
    {
        int i;
        char str[20];
        for(i=0; i<10; i++)
        {
            str[i]='a';
        }
        str[10]='\0';
        //若去掉上面一行代码,则会输出乱码
        //puts输出字符串时要遇到'\0’也就是字符结束符才停止
        puts(str);
        getch();
        return 0;
    }
    
    

    cin与cout

    • string a;
      cin>>a;
      cout<<a;

    cin:输入字符串数组时,遇到空白字符结束输入(不能读入空格)。
    cout:在输出字符串数组时,与puts()和printf+%s相同,遇到‘\0’停止输出。

    getline

    • getline(cin,str);
      默认’\n’为输入结束终止符;可读取空格
    • getline(cin,str,delim);
      delim:一个char型数据,表示字符串输出结束终止符,即输入字符串遇到该字符时结束读取

    cin.getline

    • cin.getline(ch2,6);
      默认结束符为’\n’,接受空格
      在不遇到结束符的情况下,最多可接收6-1=5个字符到ch2中
    • cin.getline(字符指针(char*),字符个数N(int),结束符(char));

    cin.getline()函数用于处理数组字符串
    函数原型:cin.getline(char * , int);第一个参数为一个char指针,第二个参数为数组字符串长度。

    展开全文
  • 在C语言中怎样定义一个字符串输入输出

    万次阅读 多人点赞 2018-02-28 16:57:29
    在C语言中没有字符串类型,用字符数组处理字符串 ...输入输出方法:逐个字符输入输出:%c 整个字符串输入输出:%s 一 :用scanf输入字符串,printf输出字符串  逐个字符处理: #include int main()

    在C语言中没有字符串类型,用字符数组处理字符串

    字符数组定义:char 数组名 [常量表达式][常量表达式]

    说明:一维字符数组,用于存储和处理一个字符串 。二维字符数组,用于同时存储和处理多个字符串

    输入输出方法:逐个字符输入输出:%c    整个字符串输入输出:%s

    一  :用scanf输入字符串,printf输出字符串

       逐个字符处理:

    #include<stdio.h>
    int main()
    {
    	char ch[5]; 
    	for (int i = 0; i < 5; i++)
    	{
    		scanf("%c", &ch[i]);
    	}
    	for (int i = 0; i < 5; i++)
    	{
    		printf("%c", ch[i]);
    	}
    	system("pause");
    	return 0;
    

      整个字符串处理:

    #include<stdio.h>
    int main()
    {
    	char ch[5];
    	scanf("%s", ch);
    	printf("%s", ch);//无需&
    	system("pause");
    	return 0;
    }

    说明:以字符串为单位处理时,直接使用数组名,无需&

               输入字符串时,字符个数要小于数组的长度,例如输入5个字符,定义的字符数组至少应该有6个元素

               输入字符串时,遇到回车或空格,输入结束,并且自动在串后面加上结束标志'\0'

               输出字符串时,遇到字符串结束标志’\0',输出结束。


              

    二  : 用字符串处理函数输入和输出       在<string.h>头文件中

        字符串输出函数puts

    格式:puts(字符数组)

    功能:向显示器输出字符串(输出完,自动换行,即用'\n'替'\0')

    说明:字符数组必须以'\0'结束

        字符串输入函数gets

    格式:gets(字符数组)

    功能:从键盘键入以回车结束的字符串放入字符数组中,并自动加’\0'

    说明:输入串长度应小于字符数组维数,字符串中可以包含空格

    #include<string.h>
    int main()
    {
    	char str[10];
    	printf("请输入字符串");
    	gets(str);
    	printf("请输出字符串");
    	puts(str);
    	system("pause");
    	return 0;
    }



    展开全文
  • 字符及字符串输入输出函数

    千次阅读 2018-09-29 17:11:18
    int getc(FILE *stream) 从指定输入流stream中读取字符(stdin表示字符) int getch(); 键盘读取字符放入缓冲区,不回显 int getchar(); 键盘读取字符放入缓冲区,回显 则字符输入通用格式  char ch; ch=...

    C

    字符输入:

    int getc(FILE *stream)  从指定输入流stream中读取字符(stdin表示字符)

    int getch();  键盘读取字符放入缓冲区,不回显

    int getchar();  键盘读取字符放入缓冲区,回显

    则字符输入通用格式 

    char ch;
    ch=getc(stdin);
    ch=getch();
    ch=getchar();

    与scanf()函数不一样,字符输入函数将空格符,制表符,换行符也作为字符接收

    字符串输入:

    gets()  读取从键盘输入的全部字符,包括空格

    char name[5];
    gets(name);

     

    展开全文
  • C语言字符串输入输出

    万次阅读 多人点赞 2018-01-26 21:30:39
    字符串输出 在C语言中,输出字符串的函数有两个: puts():直接输出字符串,并且只能输出字符串。printf():通过格式控制符 %s 输出字符串。除了字符串,printf() 还能输出其他类型的数据。 这两个函数前面...

    字符串的输出

    在C语言中,输出字符串的函数有两个:
    • puts():直接输出字符串,并且只能输出字符串。
    • printf():通过格式控制符 %s 输出字符串。除了字符串,printf() 还能输出其他类型的数据。

    这两个函数前面已经讲过了,这里不妨再演示一下,请看下面的代码:
      1. #include <stdio.h>
      2. int main(){
      3. int i;
      4. char str[] = "http://c.biancheng.net";
      5. printf("%s\n", str); //通过变量输出
      6. printf("%s\n", "http://c.biancheng.net"); //直接输出
      7. puts(str); //通过变量输出
      8. puts("http://c.biancheng.net"); //直接输出
      9. return 0;
      10. }
    运行结果:
    http://c.biancheng.net
    http://c.biancheng.net
    http://c.biancheng.net
    http://c.biancheng.net

    在 printf() 函数中使用%s输出字符串时,在变量列表中给出数组名即可,不能写为printf("%s", str[]);

    字符串的输入

    在C语言中,输入字符串的函数有两个:
    • scanf():通过格式控制符 %s 输入字符串。除了字符串,scanf() 还能输入其他类型的数据。
    • gets():直接输入字符串,并且只能输入字符串。

    1) 使用 scanf() 读取字符串

    请先看下面的例子:
      1. #include <stdio.h>
      2. int main(){
      3. char str1[30], str2[30];
      4. printf("Input str1: ");
      5. scanf("%s", str1);
      6. printf("Input str2: ");
      7. scanf("%s", str2);
      8. printf("str1: %s\nstr2: %s\n", str1, str2);
      9. return 0;
      10. }
    运行结果:
    Input str1: c.biancheng.net↙
    Input str2: Java Python C-Sharp↙
    str1: c.biancheng.net
    str2: Java

    由于字符数组长度为30,因此输入的字符串长度必须小于30,以留出一个字节用于存放字符串结束标志`\0`。

    对程序的说明:
    ① 我们本来希望将 "Java Python C-Sharp" 赋值给 str2,但是 scanf() 只读取到 "Java",这是因为 scanf() 读取到空格时就认为字符串输入结束了,不会继续读取了。请看下面的例子:
      1. #include <stdio.h>
      2. int main(){
      3. char str1[20], str2[20], str3[20];
      4. printf("Input string: ");
      5. scanf("%s", str1);
      6. scanf("%s", str2);
      7. scanf("%s", str3);
      8. printf("str1: %s\nstr2: %s\nstr3: %s\n", str1, str2, str3);
      9. return 0;
      10. }
    运行结果:
    Input string: Java Python C-Sharp↙
    str1: Java
    str2: Python
    str3: C-Sharp

    第一个 scanf() 读取到 "Java" 后遇到空格,结束读取,将"Python C-Sharp" 留在缓冲区。第二个 scanf() 直接从缓冲区中读取,不会等待用户输入,读取到 "Python" 后遇到空格,结束读取,将 "C-Sharp" 留在缓冲区。第三个 scanf() 读取缓冲区中剩下的内容。

    关于缓冲区的知识,我们在《C语言缓冲区(缓存)详解》《结合C语言缓冲区谈scanf()函数》两节中已经进行了详细讲解。

    ② 在《从键盘输入数据》中讲到,scanf 的各个变量前面要加取地址符&,用以获得变量的地址,例如:
    int a, b;
    scanf("%d %d", &a, &b);
    但是在本节的示例中,将字符串读入字符数组却没有使用&,例如:
    char str1[20], str2[20], str3[20], str4[20];
    scanf("%s %s %s %s",str1, str2, str3, str4);
    这是因为C语言规定,数组名就代表了该数组的地址。整个数组是一块连续的内存单元,如有字符数组char c[10],在内存可表示为:

    C语言还规定,数组名所代表的地址为第0个元素的地址,例如char c[10];c就代表c[0]的地址。第0个元素的地址就是数组的起始地址,称为首地址也就是说,数组名表示数组的首地址。

    设数组c的首地址为0X2000,也即c[0]地址为0X2000,则数组名c就代表这个地址。因为c已经表示地址,所以在c前面不能再加取地址符&,例如写作scanf("%s",&c);是没有道理的。

    有了首地址,有了字符串结束符'\0',就可以在内存中完整定位一个字符串了。例如:
    printf("%s", c);
    printf 函数会根据数组名找到c的首地址,然后逐个输出数组中各个字符直到遇到 '\0' 为止。
    int、float、char 类型的变量表示数据本身,数据就保存在变量中;而数组名表示的是数组的首地址,数组保存在其他内存单元,数组名保存的是这块内存的首地址。后面我们会讲解指针,大家将会有更加深刻的理解。

    2) 使用 gets() 读取字符串

    gets 是 get string 的缩写,意思是获取用户从键盘输入的字符串,语法格式为:
    gets(arrayName);
    arrayName 为字符数组。从键盘获得的字符串,将保存在 arrayName 中。请看下面的例子:
      1. #include <stdio.h>
      2. int main(){
      3. char str1[30], str2[30];
      4. printf("Input str1: ");
      5. gets(str1);
      6. printf("Input str2: ");
      7. gets(str2);
      8. printf("str1: %s\nstr2: %s\n", str1, str2);
      9. return 0;
      10. }
    运行结果:
    Input str1: Java Python C-Sharp↙
    Input str2: http://c.biancheng.net↙
    str1: Java Python C-Sharp
    str2: http://c.biancheng.net

    可以发现,当输入的字符串中含有空格时,输出仍为全部字符串,这说明 gets() 函数不会把空格作为输入结束的标志,而只把回车换行作为输入结束的标志,这与 scanf() 函数是不同的。

    总结:如果希望读取的字符串中不包含空格,那么使用 scanf() 函数;如果希望获取整行字符串,那么使用 gets() 函数,它能避免空格的截断。
    展开全文
  • 字符和字符串输入输出(经典)

    千次阅读 2014-11-13 21:18:47
    ----------------------- 1.cin.get()   (1).cin.get()-------提取单个字符,可以提取回车、空格 a=cin.get(); ...(2) 同(1)---------------提取单个字符,可以提取回车、空格 ...cin.get(字符数组,字符
  • 一、gets/puts,输入输出 1、puts()和gets()都是数组函数,输入或输出前要定义数组,一个简单的输入后再将输入的东西输出,puts()的输入和printf的输出是有一定的区别的,puts()遇到‘\0’就终止,而用printf则不会...
  • C语言字符串输入输出的几种方式

    万次阅读 多人点赞 2019-07-05 10:03:58
    1.字符串数组+初始化 char s1[]="array"; //字符数组 char s2[6]="array"; //数组长度=字符串长度+1,因为字符串末尾会自动添‘\0‘ printf("%s,%c\n",s1,s2[2]); //array,r 2.字符串指针+初始化 char *sp=...
  • C++中的几种字符串输入输出方法

    万次阅读 2017-07-06 19:07:21
    c++中的字符串的几种输入输出
  • 输入一个字符串并且逆序输出

    万次阅读 2016-12-24 20:37:03
    将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 输入 输入包括一行。 第一行输入字符串输出 输出转换好的逆序字符串。 样例输入 I am a student 样例输出 tneduts a ma I#...
  • 字符串垂直输出

    万次阅读 2018-07-10 19:39:31
    描述将输入的字符串垂直输出 输入格式这是一个字符串 输出格式多行字符串 输入输出示例 输入输出示例 1中英文String中 英 文 S t r i n gstring=input() x=len(string) for i in range(x): print(string[i])...
  • 练习7-11 字符串逆序(15 分)

    万次阅读 2018-05-23 12:27:50
    输入一个字符串,对该字符串进行逆序,输出逆序后的字符串输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串输出格式:在一行中输出逆序后的字符串输入样例:Hello World! 输出...
  • 输出格式:在一行中用以下格式输出最小的字符串:Min is: 最小字符串输入样例:5LiWangZhaJinXian输出样例:Min is: Jin#include &lt;stdio.h&gt; #include &lt;string.h&gt; main() { int N...
  • 汇编语言实现字符串输入,输出

    万次阅读 多人点赞 2018-08-23 15:38:47
    1.了解INT 21H的09H号中断调用(输出字符串) ① LEA DX,字符串的开头 或 MOV DX,OFFSET字符串的开头  ② MOV AH,09H ③ INT 21H 2.在定义字符串的时候要在末尾加上'$'作为字符串的结束标志。 3.了解...
  • #include <stdio.h>...printf(“输入一个长度为5的字符串:\n”); for(i=0;i<5;i++) scanf("%s",&c[i]); for(i=0;i<2;i++) { ch=c[i]; c[i]=c[4-i]; c[4-i]=ch; } printf(“逆序后的字符...
  • 字符数组与字符串字符串数组是一种特殊的字符数组。... 字符数组和字符串数组都可以使用%s来输出,要注意的是%s遇到0('\0')就会结束。 字符串数组可以逐个字符初始化,也可以使用字符串初始化。 字符数组的输...
  • 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入 一行字符 输出 逆序后的字符串 样例输入 123456abcdef 样例输出 fedcba654321 #include ...
  • #include &lt;stdio.h&gt; #include &lt;string.h &gt; int main() { int i = 0; char s[80] = {"...输入五个字符串:\n"); scanf("%s",s); strcpy(max,s); for(i=1; i
  • 输入一个字符串,把其中的字符按逆序输出。如输入 LIGHT,输出 THGIL。
  • #include #define N 100 int fun(char *s) { int i=0; while(*s!='\0') { i++; s++; } return i; } int main() ... printf("请输入字符串:"); scanf("%s",s); len=fun(s); printf("字
  • #include int main() { char a[80]; gets(a); int i, j = 0; for(i=0; a[i]; i++) if((a[i] >= 'a' && a[i] ='A' && a[i] { a[j] = a[i]; j++; } a[j] = '\0'; puts(a); return 0;...}
1 2 3 4 5 ... 20
收藏数 922,358
精华内容 368,943
关键字:

字符串输入输出