精华内容
下载资源
问答
  • 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语言字符串输入

    万次阅读 多人点赞 2018-08-28 10:56:36
    如果想把一个字符串读入程序,首先必须预留储存该字符串的空间,然后用输入函数获取该字符串。 分配空间 1.char *name; 2.char name[81];   1,2 的不同点:1.的指针在未进行初始化之前可能指向任何地方。  ...

       如果想把一个字符串读入程序,首先必须预留储存该字符串的空间,然后用输入函数获取该字符串。

    分配空间

    1.char *name;

    2.char name[81];

     

    1,2 的不同点:1.的指针在未进行初始化之前可能指向任何地方。

                            2.已分配了81个字节的地址。

      char *name;

      scanf("%s",name); // 错误 会将输入的字符串拷贝到任何地方可能会擦写掉程序中的数据或代码。

    为字符串分配内存后便可读入字符串。

    利用输入函数获取字符串

      1.scanf()函数。

    弊端:只能读取一个单词。

    原理:如果输入了空格会认为字符串结束,将空格的字符作为下一个输入处理。

    例如:scanf("%s",name); 输入:aas df 会将aas放入地址中再在后面自动添加'\0',并将df作为下一个输入处理。

    #include <stdio.h>
    int main()
    {
    char ch1[10],ch2[10];
    
      scanf("%s",ch1);
      scanf("%s",ch2);
      printf("%s,%s",ch1,ch2);
    return 0;
    }

    2.gets()函数。

    弊端:该函数只知道数组的开始处,并不知道数组的大小,如果输入的字符串过长容易溢出,可能擦写掉程序中的其他数据导致程序异常终止。

    原理:读取整行的输入直至遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符末尾添加一个空字符使其成为一个字符串。

    #include <stdio.h>
    int main()
    {
    char ch1[10],ch2[10];
    
      gets(ch1);
      scanf("%s",ch2);
      printf("%s,%s",ch1,ch2);
    return 0;
    }

    3.fgets()函数。

      gets()的参数只有数组的地址,而fgets()函数的参数有三个。

      fgets(将要输入字符串的地址,读入字符的最大数量,要读入的文件) 

    通过第二个参数来限制读入字符的数量解决gets()的溢出的问题。

    终止条件:①读入n-1个字符②遇到第一个换行符

    原理:①终止在末尾添加一个空字符。

               ②终止保留换行符再在末尾添加一个空字符。 

    返回值:当读到文件末尾时返回空指针。  

     

     

     

     

    展开全文
  • 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语言Visual Stdiuo字符串输入异常 ``` #include int main() { char c[6]; scanf_s("%s", c); printf("%s", c); } ``` 输入:china 引发异常:0x0FA9E63C (ucrtbased.dll)处(位于 字符串.exe 中)...
  • 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语言字符串输入与输出函数

    万次阅读 多人点赞 2015-01-15 14:57:49
    字符串输入&输出
  • C语言字符串输入函数的比较与解析

    千次阅读 多人点赞 2014-07-31 15:32:58
    在做ACM题时经常会被一些字符串输入搞得
  • scanf虽然也能输入字符串,但是遇到空格就停止了。 解决方法: 目的:输入字符串可以有空格,且,会检测是否溢出,如果溢出,将其截断。 也可以设置你想要获取的字符个数,将超出此范围的字符截断...
  • 由于%c是输入一个字符,若需要输入字符串时我们可以创建数组或指针配合循环(while,do{}while,for)来达到目的。如下例利用do{}while及数组来输入字符串,并重新输出,以字符#我结束标志: #include&amp;lt;...
  • C语言字符串输入和输出,很是方便需要的可以下载。
  • 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字符串输入和赋值。 现总结一下: 1、字符串指针一定要开辟空间后在做输入 char * str; str=(char*)malloc(100*sizeof(char)); s...
  • c语言字符串

    万次阅读 多人点赞 2018-12-05 14:04:48
    c语言字符串都是以“/0”结尾 而这里就有三个概念 EOF /0 -1 /n 首先c语言中所有字符串的结尾标志都是/0 是字符串结尾的标志 它是一种转义符 而EOF是文件流结束标志代表着 文件(file),也可以是标准输入...
  • C语言字符串输入输出处理

    千次阅读 多人点赞 2020-06-09 00:58:00
    题目 1094: 字符串输入输出处理 时间限制: 1Sec 内存限制: 64MB 提交: 13472 解决: 4902 题目描述 字符串输入输出处理。 输入 第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串...
  • C语言字符串函数大全

    2011-05-12 14:42:32
    包含了所有的C语言字符串函数。 C语言字符串函数大全: 1.字符处理库(ctype)中的函数 2.stdio中的字符串和字符输入/输出的函数 3.通用实用库stdlib中的字符串转换函数 4.字符串处理库string中的字符串处理函数
  • c语言字符串空字符

    2021-01-09 12:21:45
    c语言字符串空字符 初步结论:1.只有将字符数组初始化为字符串,空字符后面才会自动清为空字符; 2.若是后续赋值(或利用gets_s、%输入)为字符串,则只添加空字符,后续的仍为其他内容; 3.若利用for循环给字符数组...
  • 输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。 输出格式: 按照以下格式输出排序后的结果: After sorted: 每行一个字符串 输入样例: red yellow blue green...
  • C语言 字符串分割

    千次阅读 2020-07-02 12:45:00
    C语言 字符串分割 一、简述 记--字符串分割,strtok()函数的使用例子、自己实现split()函数。 二、例子代码 #include <stdio.h> #include <string.h> /* * 函数:split * 描述:按指定分隔符...
  • c语言字符串颠倒

    2018-10-28 22:55:04
    C语言实现字符串顺序翻转。
  • C语言字符串常用操作函数C语言字符...字符串输入 - gets char *gets(char *str) 标准输入 stdin 读取一行 字符串比较 - strcmp int strcmp(const char *str1, const char *str2) 字符串进行比较 如果返回值小于 0,则
  • 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语言字符串处理函数整理版本,包含字符串基本操作,字符串类型转换、字符检查、输入输出流、输入输出流分割、异常处理等
  • C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下: #include <stdio.h>int main(){ char str[] = ...
  • 主要介绍了C语言 字符串首字母转换成大写简单实例的相关资料,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 186,611
精华内容 74,644
关键字:

c语言字符串输入

c语言 订阅