53 再谈字符串

C语言中,gets() 和scanf()的区别在于输入的字符串是否中间有空格:对于前者,只有遇到"\n"时才停止输入,而对于后者,出现"\n"或空格都停止输入。

fgets会认为用户输入的回车也是字符串的一部分,并且会检查是否缓存区溢出。
所以最好使用fgets,因为比较安全,但为了保证安全,第二个参数必须正确写入。

 //scanf("%s", &l_str);
 gets_s(l_str);

 //fgets(l_str, sizeof(l_str), stdin);

 

#include<stdio.h>
#include<stdlib.h>
void main() {
char l_v1[5] = { 0 };
//scanf("%s", &l_v1);
gets_s(l_v1);
printf("%s\n", l_v1);
system("pause");
}
//scanf超过[5], 就会堆栈溢出
//scanf 当中间 有空格键(\n)不会 停止输入
//字符串输入

#include<stdio.h>
#include<stdlib.h>
void main() {
char l_v1[5] = { 0 };
//scanf("%s", &l_v1);
//gets_s(l_v1_);
fgets(l_v1,sizeof(l_v1),stdio);
printf("%s", l_v1);
system("pause");
}
//scanf gets_s超过[5], 就会堆栈溢出
//scanf 当中间 有空格键(\n) 停止输入,gets_遇到空格键(\n)不会停止输入
//fgets 以上情况都不会出现
//字符串输入


 

puts会自动输出的时候加\n
fputs是puts的文件操作版本。
第一个参数是char 字符串 ,第二个参数如果是输出到屏幕上的花,可以写stdout.
fputs(l_str,stdout)


#include <string.h>
strlen    求一个字符串的长度
strcmp  比较

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int 取字符串长度(char *p_字符串地址){
int l_长度=0;
while(*p_字符串地址!=0){
l_长度=0;
l_长度+=1;
p_字符串地址++;}
return l_长度;
}
void main() {
char l_v1[5]={0};

printf("%d",取字符串长度);
//string length的缩写;
system("pause");

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int 字符串比较(char *p_字符串地址1, char *p_字符串地址2) {
int l_v1 = strlen(p_字符串地址1);
int l_v2 = strlen(p_字符串地址2);
if (l_v1 != l_v2) {
return 1;
}
for (size_t i = 0; i < l_v1; i++){
if (p_字符串地址1 != p_字符串地址1) {
return 1;
}
}
return 0;
}

void main() {
char l_v1[] = "你好";
char l_v2[] = "你好";
int result=字符串比较(l_v1, l_v2);
if (result == 0) {
printf("相同\n");
}
else {
printf("不同\n");
}
system("pause");
}

 

posted @ 2017-11-08 11:34  随意就好欧巴  阅读(115)  评论(0编辑  收藏  举报