code blocks解决中文乱码问题:settings→compiler and debugger→compiler settings→other options→粘贴一条: -fexec-charset=GBK -finput-charset=UTF-8 →OK→
→ rebuild → yes
1,读取字符数组输入,并显示
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int i,l;
char c[50];
/*字符指针(char *a)和字符数组(char a[])的区别:字符指针存放的是一个字符串常量的首地址,即指向字符串的首地址,它是一个变量,
可以改变a使它指向不同的字符串,但一旦用类似char *a="hello";的形式定义了a所指的字符串常量,就不能改变。a[]是一个数组,可以改变数组中保存的内容。*/
char *p;
p=c;
cout<<"输入:";
cin>>c;
l=strlen(c);
cout<<l<<endl;//输出字符数组实际长度
for(i=0;i<l;i++)
{
cout<<*(p+i);
}
cout<<endl;
return 0;
}
2,读取字符数组输入,并拷贝到另一字符数组,输出显示
#include <iostream>
using namespace std;
void strcpyy(char *strDest,char *strSrc)
{
while( *strSrc!='\0')
{
*strDest= *strSrc;
strDest++;
strSrc++;
}
*strDest=0;
}
int main()
{
char a[10],b[10];
/*给字符串(数组)定义长度时,首先要确定待存储的数据的最大可能长度
,根据该长度进行数组长度定义。实际长度减一,因为有结束符 \0 */
/* 如果写成 char *c1 = "abc"; 则是在文字常量区分配了一块内存放"abc",
然后在栈上分配一地址给c1并指向这块地址,如果改变常量"abc"就会导致崩溃*/
cout<<"please input string1:"<<endl;
cin>>a;
cout<<"string1="<<a<<endl;
strcpyy(b,a);
cout<<"string1 is copied to string2"<<endl<<"string2="<<b<<endl;
return 0;
}
3.1 简单拼接(字面值的连接)
#include <iostream>
using namespace std;
int main()
{
cout << "string1 " "string2"<< endl;
return 0;
}
3.2 读取输入的两个字符数组,并连接,输出显示拼接完成的字符数组
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char a[50],b[50],c[100];//同时定义三个字符数组
char *p1,*p2,*p3;//定义三个字符指针
int i,j,I,J;
cout<<"输入字符数组a:";
cin>>a;
I=strlen(a);
p1=a;
for(i=0;i<I;i++)//这句让i从0遍历到I-1,I的值是字符数组中字符个数,不包括结束符。
//结束符 \0 在 a[49] 的位置。除非输入了49个字符,否则它不在所输入字符长度+1的位置
{
cout<<*(p1+i);
}
cout<<endl;
cout<<"输入字符数组b:";
cin>>b;
J=strlen(b);
p2=b;
for(i=0;i<J;i++)
{
cout<<*(p2+i);
}
cout<<endl;
p3=c;
for(i=0;i<I;i++)// i从0到I-1
{
*(p3+i)=*p1;
p1++;
}
for(j=0;j<J;j++)//j从0到J-1
{
*(p3+I+j)=*p2; //已经读入了a中的字符,继续读入b中的字符,指针要从c[I]的位置开始,所以是*(p3+I+j)
p2++;
}
cout<<"拼接后的字符数组";
for(i=0;i<I+J;i++)
{
cout<<*(p3+i);
}
cout<<endl;
return 0;
}
4,字符数组反转
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int i,l;
char c[50];
char *p;
p=c;
cout<<"输入:";
cin>>c;
l=strlen(c);
cout<<l<<endl;
for(i=0;i<l;i++)
{
cout<<*(p+l-1-i);
}
cout<<endl;
return 0;
}
PS:字符串和字符数组的区别:
唯一的区别就是字符串末尾有一个'\0'
面字符数组是没有的.
char ch1[]="hello";//该串有6个字符,5个可见字符,因为是串,所以末尾自动加上'\0';共六个
char ch2[]={'h','e','l','l','o'};//这样写就成了数组.是确确实实的5个字符
摘自百度知道