龙空技术网

C语言基础之数组

o一城烟雨o 111

前言:

此时看官们对“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 11
4、数组大小计算

计算数组所占字节

    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型数组的定义