字符数组的定义形式 :char a[100];
字符数组的定义和初始化; 如果初始化时初值个数大于数组数组长度,则会报错,如果等于,则不能正常输出,如果小于,系统会为剩余元素自动赋值为 '\0'
1:字符串与指针的关系
char a[5]={'A','B','C','D','E'}; 会导致不正常输出
因为没有结束标志 "\0"
如果
char a[30]={'A','B','C','D','E'}; 可以正常输出
因为数组长度够,程序会自动为剩余元素赋值为 '\0'
2:字符串数组的输入输出,
(1):地址不能直接赋值。要通过指针来进行赋值操作
(2):char *p="china";
printf("%s",p); 这是正确的 这是c++和c的区别
//字符串全部转大写strupr
数组a[] strupr(a);
指针*p strupr(p);
/*#include<stdio.h>
#include<stdlib.h>
void main(){
//char ch1[30]="i love china"; //定义方式
//或者char ch1[30]={'i','l','o','v','e'};
// char ch1[5]={'A','B','C','D'};
// printf("%s",ch1);
// printf("%x",ch1);
char ch2[20]="i love china"; //每个空格也会占用一个字节
char *p;
p=ch2;
*(p+6)='\0'; //NULL是空类型,会报错类型不一致 赋值第六个数为空,输出得到Love(空格也是一个字符)
printf("%s\n",p+2); //打印出love china
system("pause");
}*/
//输入两个数 截取一段字符串
/*#include<stdio.h>
#include<stdlib.h>
void main(){
int i,j;
char a[30]="diu lei lou mou";
char *p;
printf("请输入俩个数:");
scanf("%d,%d",&i,&j);
p=a;
if(i<=j){
*(p+j)="\0";
printf("%s\n",p+i-1);
}
else{
printf("不符合规则");
}
system("pause");
}*/
字符数组的定义和初始化 char string[20]={"i love china"}; (可以不写大括号)
字符数组的输入输出:
//字符串和数组的运算(从第七个数字开始打印,记住空格也占用一位)
/*#include<stdio.h>
#include<stdlib.h>
void main(){
char string[20]={"i love china"};
int i=7;
while(i<sizeof(string)/sizeof(char)){ //防止越界,
putchar(string[i-1]); //从a[6]开始输出 输出得到china
i++;
}
system("pause");
}*/
字符指针输出字符:字符指针初始化,将字符串首地址附给string
char *string ;
string="i love china";
//字符串和指针的运算(从第七个数字开始打印,记住空格也占用一位)
/*#include<stdio.h>
#include<stdlib.h>
void main(){
char *string="i love china";
string+=7; // p的地址往后移动七
while(*string){
printf("%c",string[0]); //在往后移7的基础上,从第一个数开始输出 输出得到china
string++;
}
system("pause");
}*/
/*#include<stdio.h>
void main(){
char ch[100];
//scanf("%s",ch);
//printf("%s",ch);
gets(ch);
puts(ch); // 输入
getchar(); //输出 效果一样
getchar();
}*/
//字符串复制函数strcpy
/*#include<stdio.h>
#include<string.h> //strcpy函数的入口
#include<stdlib.h>
void main(){
char str1[256]={'\0'};
char str2[256]={'\0'}; // 这两个数组的长度应该一样
printf("请输入第一个字符串:");
scanf("%s",str1);
strcpy(str2,str1);
printf("第二个字符串为:%s\n",str2);
system("pause");
}*/
//字符串比较函数Strcmp(两个不同的字符串的比较,从左往右当遇到不同字符时,这两个字符的ASCII码值相减,并且返回相减得到的值))
/*#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main(){
char ch1[20]={"sanzhixiong1"};
char ch2[20]={"sanzhixiong8"};
printf("%d",strcmp(ch1,ch2)); //得到的结果只有1,0,-1,编辑器的问题
system("pause");
}*/
//字符串连接函数
//获取字符串中的所有数字
/*#include<stdio.h> //主要是算法
#include<stdlib.h>
void main(){
int i;
char a[30]={""};
printf("请输入一串字符串:");
scanf("%s",&a); //输入的是字符串,定义一个空数组,将这个字符串放在数组中,以ASCII码值保存起来
for(i=0;i<30;i++){
if(a[i]>=48&&a[i]<=57){
printf("%c",a[i]);
}
}
system("pause");
}*/
//利用指针获取
/*#include<stdio.h>
#include<stdlib.h>
void main(){
int i;
char a[30]={""};
char *p;
p=a;
printf("请输入一串字符串:");
scanf("%s",&a);
for(i=0;i<30;i++){
if(*(p+i)>=48&&*(p+i)<=57){ //0到9的ASCII码值在48到57之间
printf("%c",*(p+i));
}
}
system("pause");
}*/
//指定的字符串转化成大写
//1:
/*#include<stdio.h>
#include<stdlib.h>
void main(){
char a[20]={"i love china"};
int i=7;
while(i<sizeof(a)/sizeof(char)){
strupr(a); //将截取的字符串转化成大写
putchar(a[i-1]); //a[6]开始输出
i++;
}
system("pause");
}*/
//2:
/*#include<stdio.h>
#include<stdlib.h>
void main(){
char *p="i love china";
p+=7; //p的地址往后移动七
while(*p){
strupr(p); //将截取的字符串转化成大写
printf("%c",p[0]); //在往后移7的基础上,从第一个数开始输出
p++;
}
system("pause");
}*/