输入字符串c++语言,c++输入输出字符串

  输入字符串c++语言,c++输入输出字符串

  Yyds干货库存

  Input如果要将一个字符串读入程序,必须先预留存储该字符串的空间,然后使用input函数获取该字符串。C库提供了三个读取字符串的函数:scanf()、gets()和fgets()。

  创建存储空间,可以通过数组(char name[10])来分配存储空间,也可以通过C语言的动态内存分配函数来动态分配存储空间。

  char * name

  scanf(%s ,名称);

  如果用上面的代码来创建存储空间,可能会被编译器使用,但是在读入名字的时候,名字会覆盖程序中的数据和代码,可能会导致程序异常终止。这是因为scanf()将信息复制到由name指定的地址。在这种情况下,参数是一个未初始化的指针,name可以指向任何地方。

  获取()函数

  get () (getstring)函数对于交互式程序来说非常方便。它从系统的标准输入设备(通常是键盘)获取一个字符串。由于字符串没有预先确定的长度,gets()函数通过判断遇到的第一个换行符(\n)来结束输入,按回车键可以生成这个字符。它读取换行符之前(不包括)的所有字符,并在它们之后添加一个空白字符(\0)。

  [clef@rhel6164 c]$ cat test1.c

  #包含stdio.h

  #定义最大值81

  int main(void)

  char name[MAX];

  char * ptr//指向字符的指针

  printf(请输入您的姓名。\ n’);

  ptr=gets(name);//使用地址栏将字符串分配给name

  //gets()函数使用return关键字返回字符串的地址。

  printf(name,%s\n ,name);

  printf(ptr,%s\n ,ptr);

  返回0;

  }

  运行:

  [clef@rhel6164 c]$ gcc test1.c

  /tmp/ccDJ9AHw.o:在函数“main”中:

  //因为gets()函数不检查存储区是否能容纳实际输入的数据,所以可以用下面的fgets()函数代替gets()函数。

  test1.c:(。text0x1a):警告:gets函数很危险,不应使用。

  [clef@rhel6164 c]$。/a . output请输入您的姓名clefname,clef

  //这里ptr和name的内容是同一个ptr,clef

  如果gets()函数在读取字符串时出错或遇到文件结尾,它将返回一个空(或0)地址。这个空地址称为空指针,由stdio.h中定义的常量NULL表示。下面的代码可用于一些错误检测。

  while(get(name)!=空)

  上面的错误检测也可以通过getchar函数来完成。

  while((ch=getchar())!=EOF)

  注意:空指针不同于空字符,所以不要混淆。空指针是地址,而空字符是char类型的数据对象,其值为0。数字都可以用0来表示,但概念不同:null是指针,而0是char类型的常数。

  Fgets()函数

  因为gets()函数不检查存储区是否能容纳实际输入的数据,多余的字符只是简单地溢出到相邻的内存区,所以上面的代码在编译时会有警告。fgets()函数和gets()函数的区别:

  它需要第二个参数来解释读入的最大字符数。如果该参数的值为n,fgets()将读取最多n-1个字符或一个换行符(因为会自动添加一个空白字符(\n),输入将由两者中的第一个完成。

  如果fgets()读取一个新行,它将被存储在字符串中,而不是像gets()那样被丢弃。

  它还需要第三个参数来解释要读取哪个文件。从键盘读取数据时,可以使用stdin(标准输入)作为参数。这个标识符在stdio.h中定义

  [clef@rhel6164 c]$ cat test1.c

  #包含stdio.h

  #定义最大值81

  int main(void)

  char name[MAX];

  char * ptr

  printf(请输入您的姓名。\ n’);

  ptr=fgets(name,MAX,stdin);

  printf(name,%s\n ,name);

  printf(ptr,%s\n ,ptr);

  返回0;

  }

  运行:

  [clef@rhel6164 c]$ gcc test1.c //这里没有警告。

  [clef@rhel6164 c]$。/a.out

  请输入您的姓名。

  名字,谱号

  //注意这里的换行符,因为fgets()函数不会丢弃输入的换行符。

  谱号ptr

  [clef@rhel6164 c]$

  Scanf()函数

  scanf()函数可以使用%s格式读入字符串。scanf()函数和gets()函数的主要区别在于如何决定字符串何时结束。scanf()函数更多的是基于获取单词(get word)而不是获取字符串(get string)。scanf()函数有两种方法来确定输入的结束,其中任何一种都是遇到的第一个非空白字符的开始。

  如果使用%s格式,字符串读取(但不包括)下一个空白字符(如空格、制表符或换行符)。

  如果指定了字段宽度,比如s,scanf()函数将读取10个字符,或者直到遇到第一个空白字符,输入将被第一个字符终止。

  字符串输出

  c有三个输出字符串的标准库函数:puts()、fputs()和printf()

  Puts()函数

  puts()函数很容易使用。它只需要给出字符串参数的地址,遇到空字符(\0)就会结束输出(所以肯定有空字符)。当puts()函数显示一个字符串时,它会自动在其后添加一个换行符(\n)。

  [clef@rhel6164 c]$ cat test1.c

  #包含stdio.h

  #define DEF 我是一个#defined字符串。

  int main(void)

  char str1[80]=一个数组被初始化为me。;

  const char * str2=一个指针对我进行了初始化。;

  puts(我是puts()的参数。);//直接将字符串作为参数

  卖出(DEF);//使用宏定义作为参数

  看跌期权(str 1);

  看跌期权(str 2);

  puts((str 1[5]);//必须用中括号strl1[5],因为str1会先合并,再在[5]处合并,会出错。

  看跌期权(str 2 4);

  返回0;

  }

  编译执行:

  [clef@rhel6164 c]$ gcc。/test1.c

  [clef@rhel6164 c]$。/a.out

  我是看跌期权的论据()。

  我是一个#定义的字符串。

  我初始化了一个数组。

  一个指针对我进行了初始化。

  雷对我初始化了。

  我开始对兴趣产生了兴趣。

  函数的作用是

  函数的作用是:puts()函数面向文件版本。两者之间的主要区别是:

  fputs()函数需要第二个参数来描述要写入的文件,stdout(标准输出)可以用作输出显示的参数。

  与puts()函数不同,fputs()函数不会自动在输出中添加换行符。

  读一行,回显到下一行,可以通过下面两个循环来完成。

  充电线[81];

  While(gets(line)) //当到达文件末尾时,gets()函数将返回一个空指针,循环结束。

  放(线);

  充电线[81];

  while(fgets(line,81,stdin))

  fputs(line,stdout);

  Printf()函数

  和puts()函数一样,printf()函数在输出一个字符串时也需要一个字符串地址作为参数,但是printf()函数没有puts()函数方便,但是可以格式化多种数据类型,而且输出时不会自动加一个换行符。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: