char * gets(char str) :从输入缓冲区中读取一个字符串存储到字符指针变量str所指向的内存空间。
puts(charstr):将字符串str输出。其中str是字符串数组名或者字符串指针。
区别
#include
#include
int main(){
char str[80];
gets(str);
puts(str);
}
计算字符串str的长度,直到空结束字符,但不包括空结束字符。
注:
#include
#include
int main(){
int n;
char str[80];
gets(str);
n= strlen(str);
printf("%d\n",n);
}
i love you
10
考虑下用下面的指针可以不?
#include
#include
int main(){
int n;
char str[80] , *str2;
gets(str2);
n= strlen(str2);
printf("%d\n",n);
}
当然是不行的,因为*str2是一个野指针,没有内存空间,是存不了东西的。如果用 ∗ s t r 2 = s t r *str2=str ∗str2=str,这时 ∗ s t r 2 *str2 ∗str2就有指向的空间了,可以对其进行赋值。
#include
#include
int main(){
int n;
char str[80] , *str2=str;
gets(str2);
n= strlen(str2);
printf("%d\n",n);
}
i love you!
12
将str2复制到str1
注意,strcpy会将sre的最后0也拷贝,对于字符串的赋值不能直接用 = 符号,必须strcpy
#include
#include
int main(){
char str[80] , str2[80]="i love you";//给str2赋初值
puts(str2);//输出str2 i love you
gets(str);//输入str happy
strcpy(str2,str);//将str的值赋值给str2
puts(str2);//输出str2 happy
}
将str2追加到str1字符串的结尾
内部实现:从str1 开头开始找,找到‘\0’,找到以后将srtr1的第一一个字符覆
盖dst的这个‘\0’,直到src的最后-一‘\0’写进去。
#include
#include
int main(){
int n;
char str[80],str1[80]="you love me" , str2[80]="i love you ";
puts(strcat(str1,str2));
}
you love me i love you
两个字符串自左向右逐个字符相比(按 ASCII 值大小相比较),直到出现不同的字符或遇 \0 为止。
设这两个字符串为str1, str2,
若str1=str2,则返回零;
若str1
内部是做减法操作
1."A"<"B"
2."A"<"AB"
3."Apple"<"Banana"
4."A"<"a"
5."compare"<"computer"
有关字符串与指针的知识可以看这里