#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main(){
/*gets()函数得到字符串*/
char a[100];
gets(a);
cout<<a<<endl<<endl;
/*getchar();*/
printf("%c%c\n",getchar(),getchar());
cout<<endl;
/*strcpy strchr free*/
char s[] = "hello world hell";
char *p = strchr(s,'o');//strchr在s里面寻找'o',并且把地址给*p
//此时*P里面是 o world hell
char c = *p; //设置一个字符暂时存储p的内容
*p = '\0'; //初始化*p
//此时s里面变成了hell
char *t = (char*)malloc(strlen(s)+1);//新定义t,用malloc取他的大小
strcpy(t,s); //把s复制到t里面
cout<<t<<endl; //输出t
free(t); //释放内存
*p = c; //恢复s内容
cout<<p<<endl; //检查p是否恢复
cout<<s<<endl<<endl; //检查s是否恢复
/*strcmp比较两个字符串*/
char *str1 = "abc";//这里只能用char
char *str2 = "bbc";//*str2换成str[]效果一样
if(*str1 != *str2){
cout<<strcmp(str1,str2)<<endl<<endl;
}
else{
cout<<"两个字符串一样"<<endl<<endl;
}
/*1.0字符串的拼接*/
char *firstName = "Theo";
char *lastName = "Tsao";
char *name = (char *) malloc(strlen(firstName) + strlen(lastName));
strcpy(name, firstName); // 把firstName复制到name中
strcat(name, lastName); // 把lastName追加到name中
printf("%s\n", name);
free(name);
cout<<endl;
/*2.0字符串的拼接*/
char *first = "wosh ";
char *last= "my hand";
char *Name = (char *) malloc(strlen(first) + strlen(last));
// 发送格式化输出到name指定的字符串
sprintf(Name, "%s%s", first, last);
printf("%s\n", Name);
free(Name);
cout<<endl;
system("pause");
return 0;
}
其中gets();相比于scanf的固定输入多少,gets输入的多少由我们决定;
getchar()在无变量时候,getchar的存储的方式类似于栈,只有一个字节,所以打印的时候会从右往左打印,比如我输入一个65,那么会返回我一个56