精华内容
下载资源
问答
  • C语言字符串输入输出函数

    千次阅读 多人点赞 2020-03-21 18:36:15
    C语言字符串输入输出函数 (1)putchar()函数 格式: putchar© 功能:向终端输出一个字符 注意:输出的时候不会加回车 (2) getchar()函数 格式:字符型变量=getchar () 功能:从标准输入设备上读取单个字符,返回值...

    putchar()函数

    • 格式: putchar( c )
    • 功能:向终端输出一个字符
    • 注意:输出的时候不会加回车

    getchar()函数

    • 格式:字符型变量=getchar ()
    • 功能:从标准输入设备上读取单个字符,返回值为字符。
      例:
      在这里插入图片描述

    puts()函数

    • 格式: puts(s);
    • 功能: 向标准输出设备输出已经存在的字符串,并换行(puts()把最后的’\0’变成’\n’)。

    gets()函数

    • 格式:gets(s);
    • 功能:读取标准输入设备输入的字符串,直到遇到回车键结束。
    • 注意:这和scanf()函数读取有区别的,scanf()函数在读取的时候遇到,空格 , \t ,\n 都结束读取,而gets()只是遇到回车(\n)结束读取。
    • 特别注意:gets()函数不会对接受的字符串的buffer进行边界检测,会造成越界从而产生bug。
      可以用fgets()。例:fgets(s,10,stdin); 最多读取9个字符到s,fgets()会默认的给最后加一个’ \0 '。
      例:
      在这里插入图片描述

    getche()函数

    • 需要头文件 conio.h
    • 格式:字符型变量=getche()
    • 功能:输入一个字符后会立即读取,不用等待用户按下回车键,返回值为字符。(带回显)

    getche() 就比较有意思了,它没有缓冲区,输入一个字符后会立即读取,不用等待用户按下回车键,
    这是它和 scanf()、getchar() 的最大区别。

    getch()函数

    • 需要头文件 conio.h
    • 格式:字符型变量=getch()
    • 功能:输入一个字符后会立即读取,不用等待用户按下回车键,返回值为字符。(不带回显)

    getch() 也没有缓冲区,输入一个字符后会立即读取,不用按下回车键,这一点和 getche() 相同。getch() 的特别之处是它没有回显,看不到 输入的字符。所谓回显,就是在控制台上显示出用户输入的字符;没有回显,就不会显示用户输入的字符,就好像根本没有输入一样。

    回显在大部分情况下是有必要的,它能够与用户及时交互,让用户清楚地看到自己输入的内容。但在某些特殊情况下,我们却不希望有回 显,例如输入密码,有回显是非常危险的,容易被偷窥。
    例:
    在这里插入图片描述
    在这里插入图片描述
    getche() 和 getch() 不是标准函数,只能用于 Windows。

    展开全文
  • 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() 函数,它能避免空格的截断。
    展开全文
  • C语言字符串输入输出的几种方式

    万次阅读 多人点赞 2018-02-06 00:12:56
    1.字符串数组+初始化 char s1[]="array"; //字符数组 char s2[6]="array"; //数组长度=字符串长度+1,因为字符串末尾会自动添‘\0‘ printf("%s,%c\n",s1,s2[2]); //array,r 2.字符串指针+初始化 char *sp=...

    1.字符串数组+初始化

    char s1[]="array";  //字符数组
    char s2[6]="array";  //数组长度=字符串长度+1,因为字符串末尾会自动添‘\0‘
    printf("%s,%c\n",s1,s2[2]);  //array,r

    2.字符串指针+初始化

    char *sp="pointer";  //字符指针
    printf("%s,%c,%c\n",sp,*sp,*(sp+2));  //pointer,p,i
    3.数组+scanf

    char s1[6];	
    scanf("%s\n",s1);
    printf("%s,%c\n",s1,s1[2]);  //array,r
    4.指针+scanf
    #include <stdio.h>
    #include<stdlib.h>   //该头文件别忘加,否则使用malloc会报错
    int main(){
      char *sp;
      sp=(char *)malloc(sizeof(char));
      scanf("%s\n",sp);
      printf("%s,%c\n",sp,*sp);//pointer,p
      return 0;
    }
    5.指针+数组+scanf

    char str[60], *sp=str;//将数组的首地址str赋给指针变量sp
    scanf("%s\n",sp);
    printf("%s,%c,%c\n",sp,*sp,*(sp+3));//pointer,p,n
    printf("%s,%c,%c\n",str,str[0],str[3]);//pointer,p,n
    6.注意:如下方法控制台运行会终止

    char *sp;//sp未初始化指向不明
    scanf("%s\n",sp);
    printf("%s\n",sp);
    7.用scanf和gets( 字符数组名或指针)进行输入的区别:

    char str1[60],str2[60];
    gets(str1);  //gets()函数将接收输入的整个字符串直到遇到换行为止
    printf("%s\n",str1);
    scanf("%s\n",str2);//scanf如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理
    printf("%s\n",str2);

    8.使用while(scanf("%d",&n)!=EOF){ }实现多组测试数据输入,而不在输入完一组数据后退出控制台

    char s1[60],s2[60];
    int cnt; //用来测试scanf返回被输入函数成功赋值的变量个数
    while((cnt=scanf("%s%s",s1,s2))!=EOF){  //当按下ctr+z终止输入时,scanf会返回EOF(-1)\n
       printf("scanf返回了%d, s1是%s,s2是%s, 这行输出下方可以继续进行输入\n",cnt,s1,s2);
       //scanf若成功输入str1和str2则返回2
    }
    printf("%d",cnt);//当按下ctr+z后会执行该条输出-1
























    展开全文
  • c语言字符串输入输出的几种方式

    千次阅读 多人点赞 2020-02-11 13:05:31
    在不引入string.h的前提下对字符串进行输入输出操作 ...,以回车或者空格作为输入结束符,自动在字符串末尾补上结束标志符‘\0’,所以无法将包含空格的字符串输入字符数组。 (2)使用getchar()逐个输入字符串 该函...

    在不引入string.h的前提下对字符串进行输入输出操作

    1.输入

    (1)使用scanf()输入字符串

    %s是字符串格式符号,使用格式符%s,整体输入字符串
    格式: scanf("%s", 字符数组名),注意这里不用在数组名前加&,以回车或者空格作为输入结束符,自动在字符串末尾补上结束标志符‘\0’,所以无法将包含空格的字符串输入字符数组。

    (2)使用getchar()逐个输入字符串

    该函数只能输入一个字符,同样以’\0’作为结束标志符,因此在输入时需要设定输入结束标志,并把字符串结束标志符设为’\0’.

    char s[20];
    int i = 0;
    while((s[i] = getchar()) != '\n') i++;
    s[i] = '\0'
    

    2.输出

    (1)使用printf()输出

    //第一种
    int i = 0;
    while(s[i] != '\0'){
    	printf("%c", s[i]);
    	i++;
    }
    
    //第二种
    printf("%s", s);
    

    (2)使用putchar()逐个输出字符

    //第一种
    int i = 0;
    while(s[i] != '\0'){
    	putchar(s[i]);
    	i++;
    }
    
    展开全文
  • C语言中的字符串输入输出函数

    千次阅读 2020-06-29 08:08:33
    1. 字符串输入(gets、fgets、gets_s、scanf) a. 分配内存空间 a. 静态内存分配 ○ 指的是在编译时确定数组等数据类型的大小,然后由计算机分配好 ○ 在声明数组时要显式的声明数组的大小,为字符串的输入...
  • C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
  • 可以通过字符数组或字符指针来定义字符串,也可以用宏定义对常量字符串进行定义。 通过字符数组定义字符串 一维的情况如下: char string0[10];//定义个长度为10的字符串,但未赋值 char string1[]="prison break";//...
  • C语言字符串输入输出函数实例

    千次阅读 2019-12-28 09:47:09
    C语言系列目录 C/C++学习资源(百度云盘链接) ...字符数据输入输出 字符数据输出函数putchar() C语言字符数据输出使用的是putchar()函数,它的作用就是向终端输出一个字符。 函数格式如下 int p...
  • C语言 字符串倒序输出

    千次阅读 2020-12-11 10:14:12
    思路是创建一个指向数组头的指针和数组尾的指针,然后首尾位置上的变量逐个交换值,最后到中间即2/len就完成了。 #include <stdio.h> #include <String.h> #define _CRT_SECURE_NO_WARNINGS ...
  • C语言字符串输入输出的常用格式

    千次阅读 2020-02-17 17:42:27
    ———————————————— 版权声明:本文为CSDN博主「爆爆爆炸beng」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。...1.字符串数组+初始化 char s1[]="array"...
  • C语言 字符数据输入输出

    千次阅读 2021-09-28 08:16:37
    文章目录C语言的标准库函数头文件字符数据的输入输出putchar 函数(单字符输出函数)输出一个字符:输出控制字符输出转义字符getchar 函数(单字符输入函数) 所谓数据的输入输出是从计算机角度出发的。 C语言本身...
  • C语言链表实现字符串输入、查找、删除等 C语言实验内容
  • C语言如何输入输出一个字符串

    万次阅读 多人点赞 2019-03-28 22:41:50
    C语言习题中,经常遇到字符串输入输出,我们在这里简单总结一下字符串输入输出方式。 C语言中用一般用数组来处理字符串,这里暂时讨论一维数组的输入输出,二维之后再加上。 定义:char 数组名[常量] 输入输出:...
  • C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: puts():输出字符串并自动换行,该函数只能输出字符串。 printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还...
  • 主要介绍了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的方法,是数学中非常实用的排列算法,需要的朋友可以参考下
  • 例如输入字符串abc,则输出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba 思路 这是典型的递归求解问题,递归算法有四个特性: 必须有可达到的终止条件,否则程序陷入死循环 子问题在规模上...
  • C语言实现字符串倒序输出

    热门讨论 2012-01-25 20:22:40
    C语言实现字符串的倒序输出,实现不了的,可以参考一下!
  • 这篇文章主要介绍了C语言字符输入输出以及计算字符个数的方法,是C语言入门学习中的基础知识,需要的朋友可以参考下。
  • c语言逆序输出字符串

    2015-05-20 09:57:49
    只用简单几句话,实现逆序输出.使用gets和putchar来实现
  • c语言字符串详解

    千次阅读 多人点赞 2018-09-16 18:59:04
    c语言字符串的两种处理方式,c语言处理字符串一般使用字符数组来处理,记得加上结束符,否则会出现乱码。 1、通过字符数组来处理 #include &amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt; #include &...
  • c语言字符串逐个输出汉字

    千次阅读 2021-03-03 18:58:22
    c语言字符串逐个输出汉字 #include <wchar.h> #include <locale.h> //scanf、printf都只能输入输出不加L的窄字符 //输入输出字符串可以使用 <wchar.h> 头文件中的wscanf、wprintf 函数,...
  • C语言字符串例题

    千次阅读 2019-03-02 20:56:35
    C语言字符串例题 第一题:函数实现字符串两端去除空格字符 #define _CRT_SECURE_NO_WARNINGS #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include&...
  • C语言字符串输入中文

    千次阅读 2020-02-25 17:27:42
    C语言中的字符串是以ASCII码表的形式存入的,输入英文字符是以英文字符对应的ASCII码的形式进入寄存器中的,例如输出hello world!: #include<stdio.h> int main() { char str[]="hello world!"; printf("%s\n...
  • C语言字符串输入

    千次阅读 2018-11-18 00:49:17
    如果想把一个字符串读入程序,首先必须预留存储该字符串的空间,然后用输入函数获取该字符串。 1.分配空间 要做的第一件事是分配空间,以储存稍后读入的字符串。 假设编写了如下代码: char *name; scanf("%s...
  • C语言字符串反序输出

    千次阅读 2021-03-10 18:16:57
    和以往的数字逆序输出相差无几,以及单词反转等等。 为方便分析,分析部分写入代码中… 代码展示: #include <stdio.h> #include <string.h> void ReverseSTring(char str[]); int main() { char ...
  • c语言字符串输入输出

    千次阅读 2015-10-22 22:51:46
    b、使用字符串输入(gets)、输出(puts)函数 如 warning: this program uses gets(), which is unsafe. 使用gets()时会给出上述警告,提示不安全(也就是输入的字符串大于数组的容量时字符串就溢出到 ...
  • C语言输入字符串翻转输出

    千次阅读 2019-02-20 15:34:54
    输入字符串翻转输出。例如abc→cba #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;string.h&amp;gt; #define max 256 int main() { char a[max]; gets(a); int length=strlen(a); ...
  • 使用C语言实现字符串的逆序输出

    千次阅读 2021-05-25 18:42:07
    使用C语言实现字符串的逆序输出 方法1: #include<stdio.h> #include<string.h> void reverse(char *s){ int n = 0; int m = strlen(s) - 1; while(n<m){ char tmp = s[n]; s[n] = s[m]; s[m] = tmp;...
  • C语言中怎样定义一个字符串输入输出

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 147,827
精华内容 59,130
关键字:

c语言字符串的输入输出

c语言 订阅