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

    千次阅读 2020-06-26 21:13:23
    C语言的字符串输入gets()函数 字符串简介 字符串(character string)是一个或多个字符的序列。如下所示: "Zing went the strings of my heart!" 双引号不是字符串的一部分。双引号告知编译器它括起来的是字符串。...

    C语言的字符串输入gets()函数

    在这里插入图片描述

    字符串简介

    字符串(character string)是一个或多个字符的序列。如下所示:

    "Zing went the strings of my heart!"
    

    双引号不是字符串的一部分。双引号告知编译器它括起来的是字符串。C语言没有专门用于存储字符串的变量类型,字符串都被存储在char类型的数组中。字符串常量"x"和字符常量'x'不同,区别之一在于'x'是基本类型(char),而"x"是派生类型(char数组);区别之二是"x"实际上由两个字符串组成:'x'和空字符\0

    字符串输入函数gets()

    在c语言中读取字符串有多种方法,比如scanf() 配合%s使用,但是这种方法只能获取一个单词,即遇到空格等空字符就会返回。如果要读取一行字符串,比如:

    I love you!
    

    这种情况,scanf()就无能为力了。这时我们最先想到的是用gets()读取.

    gets()函数从标准输入(键盘)读入一行数据,所谓读取一行,就是遇到换行符就返回。gets()函数并不读取换行符'\n',它会把换行符替换成空字符'\0',作为c语言字符串结束的标志。

    gets()函数经常和puts()函数配对使用,puts()函数用于显示字符串,并自动在字符串后面添加一个换行标志'\n'

    gets()的缺陷

    gets()函数存在一个严重的缺陷,这个缺陷就是:它不会检查数组是否能够装得下输入行。

    示例分析:

    /*  getsputs.c  -- using gets() and puts() */
    #include <stdio.h>
    #define STLEN 81
    int main(void)
    {
        char words[STLEN];
         
        puts("Enter a string, please.");
        gets(words);  // typical use
        printf("Your string twice:\n");
        printf("%s\n", words);
        puts(words);
        puts("Done.");
        
        return 0;
    }
    

    下面是某些编译器(至少是旧式编译器)中的运行示例:

    Enter a string, please.
    I want to learn about string theory![用户输入]
    Your string twice:
    I want to learn about string theory!
    I want to learn about string theory!
    Done.
    

    下面是在另一个编译器中的输出示例:

    Enter a string, please.
    warning:this program uses gets(),which is unsafe.
    I want to learn about string theory![用户输入]
    Your string twice:
    I want to learn about string theory!
    I want to learn about string theory!
    Done.
    

    编译器在输出中插入了一行警告信息。这是怎么回事?问题出在gets()唯一的参数是words,它无法检查是否装得下输入行。数组名会转换成该数组首元素的地址,因此gets()函数只知道数组的开始处,并不知道数组中有多少个元素。

    如果输入的字符串过长,会导致缓冲区溢出(buffer overflow),即多余的字符超出了指定的目标空间。gets()函数就会访问未被分配的内存空间,如果这些内存未被使用,不会立即出现问题;如果这片空间已经存有数据,就会擦除掉程序中的其他数据,会导致程序中止。

    正式由于gets()函数的这个缺陷,在C99标准中,已经不再建议使用gets()函数,而在C11中更是直接抛弃了这个函数。然而在实际应用中,编译器为了兼容以前的代码,大部分都继续支持gets()函数。

    gets()被抛弃,那我们用什么来代替它的功能呢?

    C11标准新增了gets_s()函数可以代替gets()函数,但是,该函数是stdio.h输入输出函数系类中的可选扩展,因此,即使编译器支持C11标准,也有可能不支持gets_s()函数。

    其实我们可以用c语言中的fgets()函数来代替gets()

    接下来的博客会会继续分析其他字符串输入函数。


    参考资料:

    [1] 史蒂芬・普拉达. C Primer Plus (第6版) 中文版[M]. 人民邮电出版社, 2016.

    [2] 详解C语言gets()函数与它的替代者fgets()函数-http://www.jb51.net/article/93972.htm

    展开全文
  • 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语言字符串输入与输出函数

    万次阅读 多人点赞 2015-01-15 14:57:49
    字符串输入&输出
  • c语言中字符串输入输出的几种方式

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

    万次阅读 多人点赞 2019-06-22 10:50:10
    算法提高 3-2字符串输入输出函数 时间限制:1.0s 内存限制:512.0MB 描述  编写函数GetReal和GetString,在main函数中分别调用这两个函数。在读入一个实数和一个字符串后,将读入的结果依次用printf输出。  两次...
  • java从控制台获取一行字符串输入

    万次阅读 2015-02-05 14:26:10
    java从控制台获取一行字符串输入
  • C语言字符串输入函数的比较与解析

    千次阅读 多人点赞 2014-07-31 15:32:58
    在做ACM题时经常会被一些字符串输入搞得
  • 以空格结束字符串输入

    千次阅读 2013-05-28 19:41:49
    其实思路很简单,只是我一开始就想到的字符串输入就是直接用 gets,发现gets无法以空格结束输入,后面在网上看了几篇文章,发现直接用scanf来输入,由于scanf是遇到 空格 回车 和 tab键 结束输入,而gets只能遇到...
  • C语言字符串输入输出

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

    千次阅读 2019-05-26 10:40:33
    在前面讲过键盘输入函数 scanf 和 %s.其实还有更简单的方法,就是使用 gets() 函数,该函数的原型为: #include<stdio.h>...gets()函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量...
  • 在labview中我用七个框来显示7个连续的字符串(数字)现在遇到3个问题 1、7个框我想让他开始的时候都显示0 2、七个框我想固定数位,比如第一个框是百万位,第二个是十万位以此类推 3、可以通过控制在直接在某一位上...
  • 关于char、string字符串输入总结

    千次阅读 2018-10-28 10:41:54
    //输入中在遇到空格符、回车符时会认为字符串已经结束 2.cin >> ch;//输入中在遇到空格符、回车符时会认为字符串已经结束 3.cin.getline(ch,100);// 输入中只会在遇到回车符时认为字符串结束,即可以接收...
  • c/c++字符、字符串输入输出

    千次阅读 2016-04-09 16:56:35
    1. scanf 1.1 输入字符 char ch; scanf("%c",&ch); 注意字符前面的取地址符 1.2 输入字符串 char str[15]; ...(1)scanf在输入字符串时,不读入空格和回车,在读入空格或回车时,输入结束
  • 字符及字符串输入输出函数

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

    千次阅读 2008-09-04 21:05:00
    任意长度的字符串输入 最近频频有朋友问我,用c语言怎样才能实现任意长度的字符串输入?同时他们也谈了很多自己的思路,有的建议定义一个大型数组,有的建议用链表来实现等等,后来都被一一否定了。数组再大空间...
  • Java 字符串输入输出函数

    千次阅读 2019-01-22 17:32:13
    在读入一个实数和一个字符串后,将读入的结果依次用printf输出。  两次输入前要输出的提示信息分别是"please input a number:\n”和"please input a string:\n" 样例输入 9.56 hello 样例输出 ...
  • C/C++字符串输入方法比较(带回车不带回车输入)
  • c语言中字符串输入

    千次阅读 2019-10-11 11:06:33
    //%s输入字符串时,不用加&,scanf做输入时遇到空格或者换行,认为一个字符串结束 }  puts(map[1]); puts(map[2]);     for(i=1;i;i++) {   for (j=1;j;j++) {  scanf("%c",&map[i][j]...
  • 如何设置输入不确定个数的字符串?中间会用空格分开,输入结束按回车键
  • C++中的几种字符串输入输出方法

    万次阅读 多人点赞 2017-07-06 11:59:03
    c++中的字符串的几种输入与输出
  • scanf虽然也能输入字符串,但是遇到空格就停止了。 解决方法: 目的:输入字符串可以有空格,且,会检测是否溢出,如果溢出,将其截断。 也可以设置你想要获取的字符个数,将超出此范围的字符截断...
  • 之后输入多行字符串(行数大于N), 每一行字符串可能含有空格,且字符数不超过1000。 输出 对于前N行字符串,按原样输出; 对于其余的字符串以空格符为分割依次按行输出。 注意:每行输出之间均要输出一个...
  • C语言--自定义字符串输入/输出函数

    千次阅读 2019-01-29 16:18:31
    C语言中字符/字符串输入/输出除了调用库函数之外还可以自定义输入/输出函数。 1.代码: #include &amp;amp;lt;stdio.h&amp;amp;gt; #define String &amp;quot;Hello, C&amp;quot; void ...
  • 字符串输入的方式写加减乘除一个计算器 目的: 字符串不能加减,打破常规,做不一样的程序猿!#include int main() { char a[999], b[3]; int c[2]; int i, j, s; int count1, count2; while(gets(a)) { ...
  • 当时我就觉得虽然达到了目的,但是我总觉得差点什么,如果我输入的是字符串那怎么办?(我是在Win7下用VS2010做的实验) 我就开始做实验。写了如下程序: #include "stdafx.h" #include #include using ...
  • C语言中没有单独定义字符串的变量类型,而是采用字符数组的形式来定义及存储。 字符串与字符数组一个很大的区别是字符串以字符‘\0’来结尾,因此采用for循环计算字符数组的长度时,常常会把字符‘\0’统计到结果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,833,509
精华内容 733,403
关键字:

字符串输入