【C语言】数组以及键盘获取字符串

目录

1、一维数组的定义

2、一维数组的初始化

3、选择排序法

 4、二维数组

5、二维数值数组的初始化

6、一维字符数组的初始化

4、字符串函数

5、键盘获取字符数组

6、经典高级字符串题型


1、一维数组的定义

1、步骤:

1、数组名 和 [] 表示数组

2、将数组的个数 放入[]里面

3、用元素的类型 定义一个变量

4、从上 往下 替换。

(1):定义一个数组 有5个元素 每个元素为int

 int arr[5];

(2):定义一个数组 有5个元素 每个元素为int * 

int *arr[5];

(3):定义一个数组 有5个元素 每个元素为数组,该数组有10个元素每个元素为int

int arr[5][10];

(4):定义一个数组 有5个元素 每个元素为函数的入口地址,该函数有两个int型形参, int返回值类型

int (*arr[5])(int, int); 

2、数组名作为类型

sizeof(arr):数组的总空间大小(数组的总空间大小==元素个数*每个元素空间大小)

sizeof(arr[0])==元素大小

sizeof(arr)/sizeof(arr[0])=元素个数

3、数组不初始化内容为随机数 


2、一维数组的初始化

1、全部元素初始化:int arr[5]={10,20,30,40,50};

如果数组的全部元素都初始化 可以省略[]中的数值,元素个数由初始化的元素个数确定。

2、部分元素初始化:int arr[5]={1,2,3};

3、指定下标初始化:int arr[5]={[2]=2, [4]=4};

3、选择排序法

#include<stdio.h>
main()
{
  int arr[10]={0};
  int n = sizeof(arr)/sizeof(arr[0]);
  printf("请输入%d个int数据:", n);
  int i=0;
  for(i=0;i<n;i++)
  {
  scanf("%d", &arr[i]);
  }
   //选择法排序
   int s= 0;
   for(s=0;s<n‐1; s++)
   {
   int min = s;
   int j = min+1;
   for(; j<n; j++)
   {
   if(arr[min] > arr[j])//从小‐‐‐>大
   {
   min = j;//纪录最小值的下标
   }
   }
   //判断假设的最小值下标 和 真实的最小值下标是否 相等 如果不相等 交换
   if(s != min)
   {
   int tmp = arr[s];
   arr[s] = arr[min];
   arr[min] = tmp;
   }
   }
 for(i=0;i<n;i++)
 {
 printf("%d ", arr[i]);
 }
 printf("\n");
 }

 4、二维数组

二维数组总大小==行数*列数*每个元素的空间大小

数组的总大小==sizeof(arr)

行数:sizeof(arr)/sizeof(arr[0]);

列数==sizeof(arr[0])/sizeof(arr[0][0]);

5、二维数值数组的初始化

1、分段初始化

 int arr[3][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; //完全初始化

 int arr[][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; //如果完全初始化 可以省略行标

 int arr[3][4]={ {1,2}, {5,6}, {9,10} };//部分初始化

2、连续初始化

 int arr[3][4]={ 1,2,3,4, 5,6,7,8, 9,10,11,12}; /完全初始化

 int arr[][4]={1,2,3,4, 5,6,7,8, 9,10,11,12};//如果完全初始化 可以省略行标

 int arr[3][4]={ 1,2, 5,6, 9,10,11}; //部分初始化

6、一维字符数组的初始化

1、逐个元素初始化 char arr[5]={'h','e','l','l','o'};//使用%s输出容易访问非法内存,下标可省。

2、字符串的方式 初始化 一维字符数组 char arr[6]="hello";下标可省。

3、遍历

使用for循环遍历

使用%s直接输出字符串,遇到’\0'才结束。

4、字符串处理函数

头文件:#inclde<string.h>

strlen:测量字符串的长度(不计算‘\0’),只要遇到‘\0’结束长度计算,数据类型为无符号长整型lu

不用strlen求字符串长度:while(str[i]&&++i);

八进制、十六进制、两个反斜杠算一个字符,%单独算一个字符。

5、键盘获取字符数组

1、scanf和%s获取字符串,遇到空格或回车结束输入。

      scanf("%s",str);//数组名作为地址,无需&

2、gets获取带空格的字符串,回车结束输入,但不会获取回车。

      不会判断目的空间是否足够,容易造成越界。

3、fgets可以获取带空格的字符串,安全。遇到回车和达到空间最大值结束获取,会提取回车。

      语法:char *fgets(char *s,int size,FIEL *stream)

s:表示空间的起始位置

size:表示的能获取的最大字节数为size-1

stream:表示设备(stdin标准输入设备(终端))

用例:fgets(str,sizeof(str),stdin);

消除获取到的回车:使用fgets语句后添加str[strlen(str)-1]=0;

6、经典高级字符串题型

1、将str1字符串拷贝到str2中(不使用strcpy)

int i=0;
while(str1[i]!='\0')
{
   str2[i]=str[1];
   i++
}

2、查找元素并输出下标

i=0;
while(str[i]!='\0')
{
  if(str[i]==ch)
     { 
       printf("找到位置为:%d",i);
       break;
     }
i++;
if(str[i]='\0');
  printf("没有找到\n");

3、求将str2字符串插入到字符串str1的pos位置(pos在str1范围内)

//计算str2的长度
 int len = 0;
 while(str2[len] && ++len);

 //将i定位到str1的尾部 i也是str1的长度
 int i=0;
 while(str1[i] && ++i);

 //在str1移动数据 预留足够的位置
 while(i>=pos)
 {
 str1[i+len] = str1[i];
 i‐‐;
 }

 //将str2的字符串 插入到pos位置上
 int j=0;
 while(str2[j] != '\0')
 {
 str1[pos] = str2[j];
 pos++;
 j++;
 }

  • 30
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 在C语言中,可以使用`scanf()`函数来从键盘输入字符串。下面是一个示例代码: ```c #include <stdio.h> int main() { char str[100]; printf("请输入一个字符串:"); scanf("%s", str); printf("您输入的字符串是:%s\n", str); return 0; } ``` 在这个例子中,我们声明了一个字符串数组`str`,并使用`scanf()`函数从键盘输入字符串。`%s`表示输入一个字符串,输入的字符串将存储在`str`数组中。需要注意的是,`scanf()`函数默认会忽略空格和换行符,直到遇到下一个非空格字符为止。所以如果需要输入含有空格的字符串,应该使用`fgets()`函数。 ### 回答2: 在C语言中,可以使用标准库函数`gets()`或`scanf()`来从键盘输入字符串。 (1) 使用`gets()`函数: `gets()`函数可以用来读取字符串。它的原型为`char * gets(char * str)`。其工作方式是从标准输入流中读取字符,并将其存储在指定的字符数组中,直到遇到换行符为止。换行符会被替换为NULL字符,表示字符串的结束。这个函数存在缓冲区溢出的风险,因此通常不建议使用。 示例代码如下: ```c #include <stdio.h> int main() { char str[100]; printf("请输入字符串:"); gets(str); printf("你输入的字符串是:%s\n", str); return 0; } ``` (2) 使用`scanf()`函数: `scanf()`函数可以用于读取各种不同类型的输入,包括字符串。其原型为`int scanf(const char * format, ...)`。在读取字符串时,可以使用`%s`作为格式控制符。 示例代码如下: ```c #include <stdio.h> int main() { char str[100]; printf("请输入字符串:"); scanf("%s", str); printf("你输入的字符串是:%s\n", str); return 0; } ``` 以上是两种常用的从键盘输入字符串的方法。需要注意的是,使用`scanf()`函数时,输入的字符串不能包含空格,因为空格会被认为是字符串的结束符。如果需要读取包含空格的字符串,可以使用`gets()`函数或者结合使用`fgets()`函数。 ### 回答3: 在C语言中,我们使用`scanf`函数来实现键盘输入字符串的功能。`scanf`函数可以从标准输入流中读取字符串,并将其保存到指定的变量中。 首先,我们需要声明一个字符数组来存储输入的字符串。例如,我们可以声明一个长度为100的字符数组`str`来存储输入的字符串。 然后,我们可以使用`scanf`函数来实现键盘输入字符串的功能。`scanf`函数的格式控制字符串为`"%s"`,我们可以将其作为`scanf`函数的第一个参数,表示要读取的数据类型为字符串。 接下来,我们将字符数组`str`作为`scanf`函数的第二个参数,用于存储输入的字符串。在`scanf`函数调用时,我们需要使用`&`符号来获取字符数组的地址。 最后,我们可以在程序中使用`printf`函数来输出输入的字符串,以验证输入是否成功。 下面是一个简单的例子来演示如何使用C语言实现键盘输入字符串的功能: ```c #include <stdio.h> #define MAX_LENGTH 100 int main(){ char str[MAX_LENGTH]; printf("请输入一个字符串:"); scanf("%s", str); printf("您输入的字符串是:%s\n", str); return 0; } ``` 在这个例子中,我们先声明了一个长度为100的字符数组`str`来存储输入的字符串。然后,使用`scanf`函数从标准输入流中读取输入的字符串,并将其存储到`str`中。最后,使用`printf`函数将输入的字符串输出到屏幕上。 需要注意的是,在使用`scanf`函数读取字符串时,输入的字符串不能包含空格或换行符,否则`scanf`函数会将其视为输入结束。如果需要读取包含空格或换行符的字符串,我们需要使用`fgets`函数来实现。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值