精华内容
下载资源
问答
  • 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-06-29 08:08:33
    1. 字符串输入(gets、fgets、gets_s、scanf) a. 分配内存空间 a. 静态内存分配 ○ 指的是在编译时确定数组等数据类型的大小,然后由计算机分配好 ○ 在声明数组时要显式的声明数组的大小,为字符串的输入...

    1. 字符串输入(gets、fgets、gets_s、scanf)

    	a. 分配内存空间
    		a. 静态内存分配
    			○ 指的是在编译时确定数组等数据类型的大小,然后由计算机分配好
    			○ 在声明数组时要显式的声明数组的大小,为字符串的输入分配内存空间
    			○ char name[81];
    		b. 动态内存分配
    			○ 通俗一点就是向计算机要内存空间,是在程序运行时,再向计算机要内存
    			○ 一般是用malloc函数
    				§ #include<stdlib.h>
    				§ void* malloc(size_t  size);
    				§ 利用malloc申请到的内存空间是以字节为单位的,返回的结果是void *,一般需要类型转换为自己需要的类型号
    				int *a;
    				a=(int*)malloc(n*sizeof(int));  //本语句的意思就是通过malloc函数向计算机申请一块内存空间,这个空间的大小是
    				n*sizeof(int),返回的是一个void*类型的指针,也就是一个指向未知类型数据的地址,之后再把这个指针转化为我们需要的类型---int *。
    				§ 与申请内存空间相对应的就是释放内存空间free()
    					□ free(a);
    					□ 只能还申请来的空间的首地址
    				§ 如果申请失败了就会选择返回0或者是NULL
    	b. gets()
    		○ gets()函数只是知道分配的内存空间的地址,但是不知道分配的内存空间有多大,也即是有可能会造成缓存区溢出问题
    		○ 读取整行数据,直至遇到换行符
    		○ gets函数会将读进的换行符丢掉
    	c. fgets()函数(通常是最佳选择)
    		○ fgets(缓冲区地址,读入字符最大值,提供字符串的文件)
    			○ fgets知道要分配的内存地址和内存空间的最大值,以及字符串数据的来源(文件),如果在控制台读入,则用stdin。
    			○ fgets()将读入n-1字符或者遇到第一个换行符为止
    			○ fgets把换行符放在字符串末尾
    			○ 该函数函数返回的地址与传入的第 1 个参数相同
    
    				#include <stdio.h>
    				#define SIZE 10
    				
    				int main()
    				{
    				    char words[SIZE];
    				    puts("Enter string:");
    				    while (fgets(words, SIZE, stdin) != NULL && words[0] != '\n') 
    				   {   
    				        fputs(words, stdout);
    				    }
    				    puts("Done");
    				
    				    return 0;
    				}
    				//如果读到文件结尾或者空行时就会退出
    				//在本例中,fgets的返回值一直都不是NULL
    				//fgets()读取字符为(SIZE-1)个即停止,或者读取到第一个‘\n’即可
    
    		○ fputs(数据来源,要写入的文件)
    			○ fputs知道数据来源和数据要写入到哪个文件,如果是写入到控制台,则用stdout
    			○ 数据来源有什么就会写什么,不会自动添加换行符
    	d. gets_s()函数也可以用于替代gets
    			○ gets_s(argu1,argu2)
    				§ argu1是存储位置,argu2是最大字符数
    			○ 和gets()一样,读到换行符时,会把换行符丢弃掉
    	e. scanf()
    		○ scanf函数确定字符串末尾的方法是
    			○ 从非空白开始直至遇到第一个空白字符(包括空行、空格、制表符、换行符)
    			○ 若指定字段宽,则将满足字宽和第一个空白字符“做或逻辑”--->满足即可
    			○ 若上一次读取键盘输入没有读完,下一次读取会从上次调用函数结束的地方开始
    

    2. 字符串输出:puts()、fputs()、printf()

    	a. puts(argu1)函数
    		a. argu1:输出字符串的地址
    		b. puts函数会在输出字符串的末尾自动加上换行符
    		c. 遇到空字符就会停止输出---因此必须确保要有空字符
    		d. 如果没有空字符,那么puts会继续打印内存中后面的字符直至遇到空字符
    	b. fputs(argu1,argu2)函数
    		a. argu1:输出字符地址;argu2:要写入数据的文件(打印在显示器用stdout)
    		b. 不在末尾添加换行符号
    	c. printf()函数
    		a. 不在末尾加换行符号
    		b. 打印多个字符串更加简单
    

    3. 自定义输入输出函数

    	a. 利用putchar,getchar,while循环等自定义输入输出函数
    
    展开全文
  • C语言字符串输入输出

    千次阅读 2020-02-23 10:59:46
    C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: puts():输出字符串并自动换行,该函数只能输出字符串。 printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还...
  • c语言字符串颠倒

    2018-10-28 22:55:04
    C语言实现字符串顺序翻转。
  • c语言字符串输入输出的几种方式

    千次阅读 多人点赞 2020-02-11 13:05:31
    在不引入string.h的前提下对字符串进行输入输出操作 ...,以回车或者空格作为输入结束符,自动在字符串末尾补上结束标志符‘\0’,所以无法将包含空格的字符串输入字符数组。 (2)使用getchar()逐个输入字符串 该函...
  • 这篇文章主要介绍了C语言字符输入输出以及计算字符个数的方法,是C语言入门学习中的基础知识,需要的朋友可以参考下。
  • C语言字符串输入输出的常用格式

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

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

    热门讨论 2012-01-25 20:22:40
    C语言实现字符串的倒序输出,实现不了的,可以参考一下!
  • 例如输入字符串abc,则输出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba 思路 这是典型的递归求解问题,递归算法有四个特性: 必须有可达到的终止条件,否则程序陷入死循环 子问题在规模上...
  • 主要介绍了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的方法,是数学中非常实用的排列算法,需要的朋友可以参考下
  • C语言字符串反序输出

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

    千次阅读 2021-05-19 18:31:06
    除了上述用字符串赋初值的办法外,还可用scanf函数和printf函数一次性输入输出一个字符数组中的字符串,而不必使用循环语句逐个输入输出每个字符。要输出一个字符串需要在printf函数的格式描述串中使用转换字符串“%...
  • c语言逆序输出字符串

    2015-05-20 09:57:49
    只用简单几句话,实现逆序输出.使用gets和putchar来实现
  • 使用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语言如何输入输出字符串发布时间:2020-11-16 17:22:03来源:亿速云阅读:165作者:小新这篇文章主要介绍了C语言如何输入输出字符串,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有...
  • C语言字符串输入

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

    千次阅读 2020-09-04 07:54:24
    C语言字符串反向输出 #include <stdio.h> #include <stdlib.h> #include <string.h> //字符串反向输出 void reverse(char *arr) { int temp, i; int len; len = strlen(arr); //获得...
  • 输入输出方法:逐个字符输入输出:%c 整个字符串输入输出:%s 一 :用scanf输入字符串,printf输出字符串 逐个字符处理: #include<stdio.h> int main() { char ch[5]; for (int i = 0; i < 5;
  • 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语言链表实现字符串输入、查找、删除等 C语言实验内容
  • 一 标准输入函数scanf,gets,fgets() scanf : 1 不能接收空格,tab、换行等字符 ... printf("请输入字符串buf:\n"); //输入 hello world scanf("%s",buf); printf("buf=%s",buf); //buf=hello, ...
  • C语言字符数组的输入输出

    万次阅读 多人点赞 2018-12-20 10:56:46
    目录 用printf输出 ... 输出方法1:printf 逐个字符输出。  void main(void){  char c[ ] = "I am happy";   int i;    for(i =0; i &lt; 10; i++){ ...
  • c语言字符串逐个输出汉字

    千次阅读 2021-03-03 18:58:22
    c语言字符串逐个输出汉字 #include <wchar.h> #include <locale.h> //scanf、printf都只能输入输出不加L的窄字符 //输入输出字符串可以使用 <wchar.h> 头文件中的wscanf、wprintf 函数,...
  • 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-01-05 23:04:07
    C语言基础:使字符串倒序输出 1. 用字符指针作形参 例1: void reverse1(char *s) { char* p=s+strlen(s)-1; char t; while(s<p) { t=*p; *p=*s; *s=t; p--; s++; } } int main(void) { char str...
  • C语言 字符串按单词逆序输出

    千次阅读 2020-12-14 18:08:53
    给定字符串 Hello world I 逆序输出为 I world Hello C语言实现 // “Hello world I” // “I world Hello ” void wordReversePrint(char s[]) { int i,len = strlen(s); char *start = s; s+=len-1; for(i...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 171,324
精华内容 68,529
关键字:

c语言字符串输入输出

c语言 订阅