字符串以及字符串的操作

来源:互联网 发布:java接口的使用方法 编辑:程序博客网 时间:2024/06/11 01:02

字符数组的定义形式  :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");
}*/











0 0
原创粉丝点击