• 字符串函数


     输入输出函数

    puts()函数只显示字符串,自动在显示的字符串末尾加上换行符。在遇到空字符时停止输出。

    puts(&a[i])或 puts(a+i)表示从此地址开始输出。

    gets()读取整行输入,直至遇到换行符,然后丢弃换行符,其余字符。在输入字符串过长时,会导致缓冲区溢出,然后报错。


    fgets(数组名,length,读入的文件——stdin)读到换行符时,会把它存储在字符串中,然后自动读下一行,读到文件结尾,它会返回一个特殊的指针:空指针(NULL)

    fputs(数组名,写入的文件——stdout)不会在字符串末尾添加换行符,最后一个字符为\0空字符。

    1. /*将换行符替换成空字符*/
    2. while(words[i] != '\n')
    3. i++;
    4. words[i] = '\0';
    1. /*如果目标数组装不下一整行输入,则丢弃多出的字符*/
    2. while(getchar() != '\n')
    3. continue;
    1. while(fgets(word,STLEN,stdin) != NULL && words[0] != '\n')
    2. fputs(words,stdout);
    3. /*程序继续使用输入行中超出的代码*/

    1. char * s_gets(char * st, int n)
    2. {
    3. char * ret_val;
    4. int i = 0;
    5. ret_val = fgets(st, n, stdin);
    6. if (ret_val)
    7. {
    8. while (st[i] != '\n' && st[i] != '\0')
    9. i++;
    10. if(st[i] == '\n')
    11. st[i] = '\0';
    12. else
    13. while(getchar() != '\n')
    14. continue;
    15. }
    16. return ret_val;
    17. }
    1. char * s_gets(char * st, int n)
    2. {
    3. char * ret_val;
    4. ret_val = fgets(st, n, stdin);
    5. if (ret_val)
    6. {
    7. while (*st != '\n' && *st != '\0')
    8. st++;
    9. if(*st == '\n')
    10. *st = '\0';
    11. else
    12. while(getchar() != '\n')
    13. continue;
    14. }
    15. return ret_val;
    16. }
    17. /*用指针表示法*/


    gets_s(words,length) 读到换行符,会丢弃换行符。当读到最大字符时都没有换行符,将目标数组中的首字符设置为空字符,读取并丢弃随后的输入直至读到换行符或文件结尾,然后返回空指针。


    scanf("%10s",name)以下一个空白字符(空行,空格,制表符或换行符)作为字符的结束,scanf函数返回一个整数值,该值等于scanf()成功读取的项数或EOF,读到文件结尾时返回EOF。若超过字段宽度,scanf函数将会读取上一个调用结束的地方继续读取。

    printf()函数不会自动在每个字符串末尾加上一个换行符,使用\n进行换行 。


    自定义输入输出函数

    1. /*打印字符串,不添加\n*/
    2. void put1(const char * string)
    3. {
    4. while(*string)
    5. putchar(*string++);
    6. }
    7. /*用数组表示法编写*/
    8. void put1(const char string[])
    9. {
    10. int i = 0;
    11. while(string[i] != '\0')
    12. putchar(string[i++]);
    13. }
    1. /*打印字符串,并给出待打印字符的个数*/
    2. int put2(const char * string)
    3. {
    4. int count = 0;
    5. while (*string);
    6. {
    7. putchar(*string++);
    8. count++;
    9. }
    10. putchar('\n');
    11. return(count);
    12. }

    字符串函数

    strlen() 用于统计字符串的长度

    1. /*用于缩短字符串的长度*/
    2. void fit(char *string, unsigned int size)
    3. {
    4. if (strlen(string) > size)
    5. string[size] = '\0';
    6. }

    strcat() 用于拼接字符串,接受两个字符串作为参数,该参数把第二个字符串的备份附加在第一个字符串的末尾,并把拼接后的字符串作为第一个字符串,第二个字符串不变。返回第一个字符串的地址。


    strncat(ar1,ar2,13) 第三个参数指定了最大添加字符数


    strcmp(ar1,ar2) 用于比较字符串的内容,不是地址,如果两个字符串(不是比较字符,比较字符使用==)参数相同,则函数返回0,否则返回非零值。 返回值为两者ASCII码之差。


    strncmp(ar1,ar2,数字)用于比较字符串中的字符,直到发现不同的字符为止,第三个参数用于指定前多少个字符数。 


    strcpy(目标,源),strcpy()返回的类型是char*,即一个字符的地址,第一个参数不必指向数组的开始。


    strncpy(target,source,n)第三个参数可拷贝的最大字符数。把n设置为笔目标数组大小-1,然后把数组最后一个元素设置为空字符。


    sprintf(formal,"   ",         ,         )函数于printf()用法相同,声明在stdio.h函数,它将数据写入字符串,而不是打印在显示器上。


    字符串转化为数字

    atoi()用于把字母数字转换成整数,接受字符串作为参数返回整数值。

    atof()把字符串转换成double类型的值。

    atol()把字符串转换成long类型的值。

    strtol(const char * restrict nptr,char **restrict endptr, int base)endptr是一个指针的地址,该指针被设置为标识输入数字结束字符的地址,base表示进制。strtol把字符串转换成long类型的值。最多转三十六进制

    strtoul()把字符串转换成unsigned long类型的值。

    strtod()把字符串转换成double类型的值。

  • 相关阅读:
    MongoDB基本使用
    论文解读(GATv2)《How Attentive are Graph Attention Networks?》
    vue--10.路由守卫、仓库vuex、elementUI框架
    Android Studio中配置jdk版本无效问题
    Android AMS——AMS初始化(二)
    phpstudy设置允许远程访问mysql数据库(linux,pc都适用)
    【JavaScript进阶之旅 函数式编程篇 第三十三章】JS函数、特点、函数式编程、纯函数
    爱创科技总裁谢朝晖出席腾讯盛典, 获“年度ISV卓越合作伙伴”载誉而归!
    【FreeSwitch开发实践】C语言中使用ESL连接FreeSwitch
    聊聊运行时监控方案
  • 原文地址:https://blog.csdn.net/weixin_52227051/article/details/132603963