前言:
此时看官们对“c语言键盘输入字符数组”大概比较讲究,你们都需要知道一些“c语言键盘输入字符数组”的相关知识。那么小编同时在网摘上收集了一些对于“c语言键盘输入字符数组””的相关文章,希望小伙伴们能喜欢,各位老铁们快快来学习一下吧!一、一维数组1、一维数组的介绍
用一段连续空间 存放相同类型的变量 这样的容器(结构)叫数组。
数组的下标是从0开始。
加入数组有n个元素:
下标范围:0~n-1
元素范围:arr[0]~arr[n-1]
2、定义数组
1、定义一个数组 有3个元素 每个元素为int
int Array[3];
2、定义一个数组 有3个元素 每个元素为int *
int *Array[3];
3、定义一个数组 有3个元素 每个元素为函数的入口地址,该函数有两个int型形参,int返回值类型
int (*arr[3])(int, int);3、数组初始化
如果数组的全部元素初始化,可以省略[]的数值
int arr[] = {12,1,4,5,7};
int部分初始化,未初始化的自动补0
int arr[5] = {12,23,4};
指定下标初始化
int arr[5] ={[2]=12,[4]=11}//0 0 12 0 114、数组大小计算
计算数组所占字节
sizeof(arr);
计算数组一个元素所占字节
sizeof(arr[0]);
得到数组元素个数
int n = sizeof(arr)/sizeof(arr[0]);二、一维字符数组1、一维字符数组初始化
逐个元素初始化(不推荐)
char arr[5] = {‘h’,’e’,’l’,’l’,’o’};
字符串方式初始化字符数组(推荐)
(编译器会自动在字符串末尾添加‘\0’作为字符串结束标志位)
char arr[6] = “hello”;2、字符数组遍历
使用for循环遍历(逐个字符操作)
char arr[20] = "hello world"; int n = sizeof(arr)/sizeof(arr[0]); for(int i=0 ;i<n ;i++) { printf(“%c ”,arr[i]); }
使用%s直接输出字符串,需要字符串的首元素地址,遇到’\0’才结束
char arr[6] = “hello”; printf(“%s”,arr);
strlen测量字符串的长度(不计算’\0’,遇到’\0’结束长度计算)
printf(“strlen(arr)=%lu\n”,strlen(arr));3、键盘输入字符数组(1)scanf获取字符串
scanf和%s获取字符串(遇到空格或回车结束输入)
char str[128] = “”; printf(“输入字符串”); scanf(“%s”,str);//不需要加& printf(“%s\n”,str);
输入 hello world
输出 hello
(2)gets()获取字符串
char str[128] = “”; printf(“输入字符串”); gets(str); printf(“%s\n”,str);
获取带空格的字符串数组fgets()函数(安全)
char *fgets(char *s,int size,FILE *stream);
s:表示空间起始位置
size:表示能获取的最大字节size-1
stream:表示设备
(3)字符串拷贝
#include <stdio.h>int main(int argc,char *argv[]){ char arr[128] = “”; printf(“请输入一个字符串:”); fgets(arr,sizeof(arr),stdin);//可以获取带空格的字符串,但是会打印回车键 arr[strlen(arr)-1] = 0;//消除回车键 strlen测量字符串长度 int i = 0; while(arr1[i] !=’\0’) { arr2[i] = arr1[i]; i++; } arr2[i] = ‘\0’; printf(“arr1:%s\n”arr1); printf(“arr2:%s\n”arr2); return 0;}三、二维数组1、二维数组的介绍
二维数组的总大小 == 行数 * 列数 * 每个元素大小
数组总大小 == sizeof(arr)
行数 == sizeof(srr)/sizeof(arr[0])
列数 == sizeof(arr[0])/sizeof(arr0)
2、数组初始化
分段初始化(完全初始化)可省略行数
int arr[3][4] = {{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7}}
分段初始化(部分初始化)
int arr[3][4] = {{1,2},{2,5},{3,4},{4,5,6}}
连续初始化(完全初始化)
int arr[3][4] = {1,2,3,4,5,6,7,8,9,0,12,23}
填满一行,进行下一行连续初始化(部分初始化)
int arr[3][4] = {6,7,8,9,0,12,23}3、数组遍历
#include <stdio.h>int main(int argc, char const *argv[]){ int arr[3][3] = { {1,2,3}, {4,5,6}, {7,8,9}, }; //外层循环遍历 for(int i = 0;i<3;i++) { //打印循环遍历列 for (int j = 0; j < 3; j++) { printf("%d ",arr[i][j]); } //每行结束换行 printf("\n"); } return 0;}四、数组操作函数1、字符串拷贝
#include <stdio.h>void my_strcopy(char *dest,const char *src){ while (*src != '\0') { *dest = *src; dest++; src++; }}int main(int argc, char const *argv[]){ char src[] = "hello world!"; char dest[128] = ""; my_strcopy(dest,src); printf("%s\n",dest); return 0;}2、字符串追加
#include <stdio.h>void my_strcat(char *dest,const char *src){ //找到目标字符串的末尾 while (*dest != '\0') { dest++; } //将源字符串拷贝到目标字符串 while (*src != '\0') { *dest = *src; dest++; src++; } //在目标字符串末尾添加终止字符 *dest = '\0';}int main(int argc, char const *argv[]){ char dest[128] = "hello "; char src[128] = "world!"; my_strcat(dest,src); printf("%s\n",dest); return 0;}3、字符查找
#include <stdio.h>char *my_strchr(const char *str,char c){ while (*str != '\0') { //如果找到字符,返回指向该字符的指针 if(*str == c) { return (char*)str; } str++; } //如果没找到字符返回空 return NULL;}int main(int argc, char const *argv[]){ char str[128] = "q,w,e,d,s,c,v,h,y,u"; char c = 'd'; char* result = my_strchr(str,c); if(result != NULL) { printf("%c:%d\n",c,result - str); } else { printf("%c not found\n",c); } return 0;}五、案例
1、键盘获取英文字母,输出在26个英文字母的第几位
知识点:
(1)键盘获取字符
(2)输入大写或小写,输出相同的结果
(3)字符比较
(4)若输入多个字符,逐个输出位置
#include <stdio.h>void my_Array(const char * str){ int num = 0; while (*str != '\0') { if(*str>=65 && *str <=90) { num = *str-64; printf("%d ",num); } else if(*str>=97 && *str <=122) { num = *str-96; printf("%d ",num); } else { printf("error\n"); } str++; }}int main(int argc, char const *argv[]){ //键盘获取字符 printf("请输入英文字符或字符串:"); char str[128] = ""; scanf("%s",str); //字符逐个比较 my_Array(str); return 0;}
2、键盘获取字符串,将某些字符替换为指定字符,并拷贝到新字符串中
知识点:
(1)键盘获取字符串
(2)字符的查找替换
(3)字符串的拷贝
#include <stdio.h>void my_str(const char *str,char c,char a) { int i = 0; char array[128] = ""; while (*str != '\0') { //如果找到字符,返回指向该字符的指针 if(*str == c) { array[i] = a; } else { array[i] = *str; } i++; str++; } printf("%s",array); }int main(int argc, char const *argv[]){ //键盘获取字符 printf("a:"); char str[128] = ""; char c; char a; scanf("%s",str); printf("b:"); scanf(" %c",&c); printf("c:"); scanf(" %c",&a); //字符逐个比较拷贝 my_str(str,c,a); return 0;}六、如有错误欢迎指正
关注公众号“小小创客者”分享更多学习笔记
标签: #c语言键盘输入字符数组 #c利用一维数组存放键盘输入10个整数 #c语言输入一个二维数组判断他的数字个数 #数组的下标从什么地址开始好处是什么 #char型数组的定义