字符数组和字符串

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

 

int main01()

{

//字符

  char ch='a';

//字符串:字符串结束标志为“\0”,数字0等同于“\0”;但是不等同于“ '0' ”;字符串就是一个字符数组的特例

  //字符串样式:

  //char*arr="hello";

  //char arr[] = "hello";

  //char arr[]={"hello"};

  //char arr[][6]={"hello","world"};//字符串数组

  //char arr[] = { 'h','e','l','l','o','\0'};//“ '\0' ”结束

  //char arr[6] = { 'h','e','l','l','o'};//当数组下标为5时,为字符;当数组下标为6时,为字符串

  //char arr[100] = { 110,111,112,101,123,98 };

  char arr[] = { 110,111,112,101,123,98,0};//0表结束

  printf("%s", arr);//%s:打印字符串

 

  

//定义字符数组

  char arr1[5] = { 'h','e','l','l','o'};

  printf("5个元素的字符型数组大小为:%d\n", sizeof(arr1));//1*5=5

  for (int i = 0; i <sizeof(arr1)/sizeof(arr1[0]); i++)

  {

    printf("%c", arr1[i]);//%c:打印字符

  }

  return 0;

}

 

int main02()

{

//定义字符数组存储字符串

 

//定义了一个字符串数组,能存储有效字符10个

  char ch[11];

/*ch本身就是一个地址,不用&。%10s在这里起限定的作用,表示有10个有效字符,需预留一个位置存\0;scanf接收空格或接收换行表示结束。eg:如输入hello worldaoao,不会报错,而是打印hello*

  scanf("%10s",ch);

  printf("%s",ch);

  return 0;

}

 

int main03()

{

//字符串拼接

 

 

 

  char ch1[]="hello"//占6个字节空间(包括“\0”)

  char ch2[]="world"

  char ch3[20];

  

  int i=0;

  int j=0;

  while(ch1[i]!='\0')

  {

    ch3[i]=ch1[i];

    i++;//最后一层循环i=5

  }

  while(ch2[j]!='\0')

  {

    ch3[i+j]=ch2[j];

    j++;//最后一层循环j=5

  }

  ch3[i+j]=0;//i+j=10;//ch3[i+j]是一个元素,可以赋值。0相当于“ '\0' ”

  printf("%s",ch3);

  return 0;

//结果

 

 

 

}

posted @ 2020-08-16 22:45  wh19991213  阅读(85)  评论(0编辑  收藏  举报