在C语言中,有两个函数可以让用户从键盘上输入数组数据,它们分别是gets()和scanf()。scanf()是通过格式控制符%s输入数组字符串,除了字符串,还能输入其他类型的数据;gets()是直接输入数组字符串,并且只能输入字符串。

但是,scanf()和gets()是有区别的。

scanf()读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。

gets()认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。换句话说,gets() 用来读取一整行字符串。

举个例子:#include

int main(){

char str1[30] = {0};

char str2[30] = {0};

char str3[30] = {0};

//gets() 用法

printf("Input a string: ");

gets(str1);

//scanf() 用法

printf("Input a string: ");

scanf("%s", str2);

scanf("%s", str3);

//分别输出

printf("\nstr1: %s\n", str1);

printf("str2: %s\n", str2);

printf("str3: %s\n", str3);

return 0;

}

运行结果:Input a string: C C++ Java Python

Input a string: PHP JavaScript

str1: C C++ Java Python

str2: PHP

str3: JavaScript

第一次输入的字符串被 gets() 全部读取,并存入 str1 中。第二次输入的字符串,前半部分被第一个 scanf() 读取并存入 str2 中,后半部分被第二个 scanf() 读取并存入 str3 中。

注意,scanf() 在读取数据时需要的是数据的地址,这一点是恒定不变的,所以对于 int、char、float 等类型的变量都要在前边添加&以获取它们的地址。但是在本段代码中,我们只给出了字符串的名字,却没有在前边添加&,这是为什么呢?因为字符串名字或者数组名字在使用的过程中一般都会转换为地址,所以再添加&就是多此一举,甚至会导致错误了。

就目前学到的知识而言,int、char、float 等类型的变量用于 scanf() 时都要在前面添加&,而数组或者字符串用于 scanf() 时不用添加&,它们本身就会转换为地址。读者一定要谨记这一点。

至于数组名字(字符串名字)和地址的转换细节,以及数组名字什么时候会转换为地址。

c语言定义数组中字母怎么输入,c语言数组怎么输入?相关推荐

  1. java数组输入一个实数_用java!!输入五个数,保存到一个数组中,然后将... C语言,编写一个程序,从键盘输入5个数,算出总和......

    导航:网站首页 > 用java!!输入五个数,保存到一个数组中,然后将... C语言,编写一个程序,从键盘输入5个数,算出总和... 用java!!输入五个数,保存到一个数组中,然后将... C ...

  2. 2021.04.06JAVA定义一个数组,随便输入一个数字,判断这个数在数组中是否存在,存在返回数组的下标,否则返回-1

    定义一个数组,随便输入一个数字,判断这个数在数组中是否存在,存在返回数组的下标,否则返回-1 public class TestD {public static void main(String[] ...

  3. C语言向有序数组中插入一个数使该数组仍保持有序

    C语言向有序数组中插入一个数使该数组仍保持有序 #include<stdio.h> int main() {     int n,i,j,t,k;     printf("您喜欢 ...

  4. c++ 返回数组中最大的值_Swift语言必学秘技:数组里面的使用方法

    ​Swift语言必学秘技:数组里面的使用方法 这一期我们来说一下Swift语言里面数组的应用方法. 在Swift语言中,数组中可以放入任何类型的数据.这些数据包括整型,字符串,甚至是对象. 第一部分, ...

  5. c++[2035]将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。

    [题目描述] 将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置. [输入] 第一行为数组a的元素个数: 第二行为n个小于1000的正整数. [输出] 平移后的数组元素,每个数用一个空格隔 ...

  6. asp数组中REDIM的用法(动态数组)

    asp数组中REDIM的用法(动态数组) 动态数组里面的一个语句,只能出现在过程里面,可以多次使用.可以改变数组大小,和维数 格式: REDIM [Preserve] 数组名(下标1[下标2....] ...

  7. 数组中哪些常用方法会修改原数组

    一.不会改变原来数组的有: concat() concat() 方法用于连接两个或多个字符串. 该方法没有改变原有字符串,但是会返回连接两个或多个字符串新字符串. every() every() 方法 ...

  8. js移除数组中的元素(返回新数组)

    移除数组中的元素(返回新数组) 移除数组 arr 中的所有值与 item 相等的元素.不要直接修改数组 arr,结果返回新的数组. 输入:[1,2,3,4,2] ,2 输出:[1,3,4] 第一种解决 ...

  9. 利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点

    利用for循环把遍历数组中的元素依次获取出来 数组索引号从0开始 所以i必须从0开始  i<6 <script>var arr = ['blue', 2, true, 4, 5, 6 ...

  10. vba 跳到下一个循环_VBA野知识分享:从一个数组中取部分值生成新数组,不使用循环的思路...

    从一个数组中取部分值生成新数组,要实现此需求通常都是采用循环的方法来完成,那有没有更简易的思路呢? 借用jscript可以实现,直接取值,不用循环.例如从100000万中元素是取8000个值出来生成新 ...

最新文章

  1. LibreOJ β Round #2
  2. 解决 Windows10 和 Ubuntu18.04.4 双系统 时间同步不一致问题
  3. html5网站测试工具,基于HTML5网页的前端技术测试技巧
  4. php 图片上传 水印,PHP - 图片上传并添加水印
  5. 2016年物联网技术将从概念走向落地
  6. 大型网站技术架构 读书笔记 (二) 大型网站架构模式
  7. python五子棋双人对弈_基于python的socket实现单机五子棋到双人对战
  8. 微信小程序,实现一个简易的新闻网
  9. PCIE控制器——设备地址空间访问——配置空间
  10. 《指弹:风居住的街道》
  11. Pitest内存泄露分析 (工具使用IDEA、Jprofiler)
  12. Pycharm 使用多个光标进行编辑
  13. okd下gitlab首次启动没有重置密码如何登陆
  14. bzoj 2648 SJY摆棋子 cdq分治+树状数组
  15. Alpha 事后诸葛亮
  16. 3dsMax2016卡死的一种解决办法
  17. qq影音qlv转mp4工具软件电脑pc版
  18. 国外优秀的人工智能商务工具,主要有哪些?
  19. 停车场管理_充电桩_停车收费_物业管理_源码
  20. 无法停止‘通用卷’设备的解决方案

热门文章

  1. 超详细的Python面向对象编程讲解
  2. Extjs实现角色权限流控制,对fieldset,checkbox的动态控制
  3. LVDS学习笔记之lvds_transceiver设计及仿真
  4. 这几个解决D5渲染器崩溃闪退的方法,一定要试试
  5. 信息安全技术--轮转机密码
  6. 《IT时代周刊》:雅虎兵败中国
  7. 探索搜索引擎技术的现状和将来(转)
  8. [OfficeExcel] OfficeExcel2010 第23讲 Excel饼图美化与PPT图表
  9. Jenkins配置邮件, Extended E-mail Notification, 破解管理员密码
  10. 地摊经济:78岁高龄老人摆地摊的背后,蕴藏着9000万老年再就业市场的巨大商机