1.字符串长度问题。
字符串在内存中存储是以‘\0’结尾。
假设代码如下:
#include <stdio.h>
pragma warning(disable:4996)
int main(){
char str1[5]="hello";//hello为5个字符
...
return 0;
}
程序报错,E0144:"const char[6]"类型的值不能用于初始化char[5]类型的实体。
2.scanf与gets
常规scanf无法读取空格,gets读取一整行数据,即识别到’\n’读取结束。
char str1[30]={0};
char str2[30]={0};
scanf("%s",str1);
scanf("%s",str2);
输入hello world,赋值情况,str1:hello str2:world;
scanf能够替代gets:
char str[30]={0};
scanf("%[^\n]s",str);
意思是读取除’\n’外的所有字符。
3.string.h-strcat字符串合并
char str1[100]="first str+second str:";
char str2[50]="I'm second str";
strcat(str1,str2);
str1需要足够大来容纳合并后的字符串。
4.string.h-strcpy字符串拷贝
char str1[100]="I'm about to be replaced";
char str2[50]="I replaced the str1";
strcpy(str1,str2);
5.string.h-strcmp字符串比较
char str1[]="I'm different from str2";
char str2[]="I'm different from str1";
printf("%d",strcmp(str1,str2));
strcmp返回值:相同返回0,不同不为0。