录入数组遇回车截止(c++)

本文介绍了如何在C++中处理输入数组时,遇到回车键自动截止的问题。通过分析cin>>的读取规则和利用cin.get()检查回车符,可以实现用户输入数组时,按下回车即停止录入的功能。

在写输入接口时,对于录入数组遇回车截止的需求比较高,在网上查阅后得到了解答,此处感谢1楼作者给出的解答。

程序遇到cin>>时:

cin>>temp;
cin>>temp2

用户开始在键盘上写数组 1‘空格符’2‘空格符’3‘回车符’,看起来是1 2 3:

1 2 3

系统遇到用户的回车符,将 1‘空格符’2‘空格符’3‘回车符’放入输入缓存区;然后程序开始往后面进行

>>temp;

cin>>从缓存区把“东西”赋给temp,录入规则是,如果读到“空格符”,“制表符”和“换行符”跳过,直到读到“东西”,然后读至新的“空格符”,“制表符”和“换行符”结束,注意!!后面读到的“空格符”,“制表符”和“换行符”并不会从缓存区扔掉!!

运行完

cin>>temp;

后,缓存区留下的内容是


                
在C语言中,将数据录入数组有多种方法,以下结合参考内容为你详细介绍: ### 静态数组录入数组大小固定时,可使用循环结合`scanf`函数录入数据。以用数组存放班里10位同学的成绩为例: ```c #include <stdio.h> #define NUM 10 //宏定义 int main() { int i; int s[NUM]; for(i = 0; i < NUM; i++) { printf("请输入第%i位同学的成绩:", i + 1); scanf("%d", &s[i]); } return 0; } ``` 上述代码通过`for`循环结合`scanf`函数,将用户输入的成绩依次存入数组`s`中,这是一种常见的静态数组数据录入方法[^2]。 ### 动态数组录入 若需要根据用户输入动态确定数组大小,可使用`malloc`函数动态分配内存。示例如下: ```c #include <stdio.h> #include <stdlib.h> int main() { int length; printf("请输入数组的长度:"); scanf("%d", &length); int *arr = (int *)malloc(length * sizeof(int)); if (arr == NULL) { printf("内存分配失败\n"); return 1; } for (int i = 0; i < length; i++) { printf("请输入第%d个元素:", i + 1); scanf("%d", &arr[i]); } free(arr); // 释放动态分配的内存 return 0; } ``` 此代码先让用户输入数组长度,然后使用`malloc`函数为数组分配相应的内存空间,再通过`for`循环结合`scanf`函数将数据录入数组,最后使用`free`函数释放动态分配的内存[^1]。 ### 二维数组录入 对于二维数组,可使用嵌套循环结合`scanf`函数录入数据。以求3*3的整型矩阵对角线元素之和为例: ```c #include <stdio.h> int main() { int array[3][3]; int i, j; printf("输入数据:\n"); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { scanf("%3d", &array[i][j]); } } return 0; } ``` 上述代码使用两层`for`循环,外层循环控制行,内层循环控制列,通过`scanf`函数将用户输入的数据依次存入二维数组`array`中[^3]。 ### 字符串数组录入 在处理字符串数组时,可使用`scanf`或`gets`(不推荐,有缓冲区溢出风险)、`fgets`函数录入数据。以从0号下标遍历数组并处理元素移动问题为例,可先录入字符串: ```c #include <stdio.h> #define MAX_LEN 100 int main() { char str[MAX_LEN]; printf("请输入一个字符串:"); fgets(str, MAX_LEN, stdin); return 0; } ``` 此代码使用`fgets`函数从标准输入读取一行字符串存入数组`str`中,避免了`gets`函数的缓冲区溢出问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值