字符串操作

1.字符串判断是否为空
两种方法:
strcmp(str, “0”);返回0 为空
str[0] == ‘\0’ 相等则为空。
第一种方法调用函数,始终还是有消耗的,建议使用第一种。
2.字符数组赋值
两种方法:
1)定义时赋值

char a[10] = "hello";
char a[10] = {'h','e','l','l','o'};

2)用strcpy

char str[10];
strcpy(str, "hello");

3.sprintf和snprintf函数
首先说snprintf函数要安全一些,看函数的声明

int sprintf(char *str, const char *format, ...); 
int snprintf(char *str, size_t size, const char *format, ...);

snprintf多传了一个size参数,这就使snprintf函数没有了字符串缓冲区溢出的风险。如果要拷的字符串长度大于size,snprintf函数会截断字符串,并在最后添加一个尾0.但是snprintf返回的int是要拷贝的字符串的长度,而不是实际拷进str的长度,这点尤其要注意。而sprintf返回的则是实际拷到str的长度。
4.strcpy和strncpy函数

char *strcpy(char * desc, char *src);
char *strncpy(char * desc, char * src, size_t n);

strcpy在拷贝的时候会一直拷贝,知道遇见’\0’,显然这种拷贝是非常不安全的。
strncpy增加了一个参数,但是此函数也是不检查是否越界的,n只是指定要拷几个字符到desc,所以此函数正确的用法memset(desc, 0, sizeof(desc));
strncpy(char *desc, char *src, sizeof(desc) - 1);着用就比较安全了。
5.输入函数
fgets函数

char *fgets(char *buf, int bufsize, FILE *stream);`

使用时需要注意的是fgets函数会将键盘输入的\n回车符写到buffer中,因此如果我们期望的是回车符前面的字符串,我们需要将最后的回车符换成尾0,如下:

char dbDomain[1024] = {0};
printf("please configure the DB_domainSocket\n"); 
fgets(dbDomain, 1024, stdin); 
dbDomain[strlen(dbDomain) - 1] = '\0';

更新中。。
stdin和stdin_fileno区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值