zoukankan      html  css  js  c++  java
  • Linux C 基本应用_09

    编辑器 + 编译器 + 调试工具 + 项目管理软件。
     * 字符串操作, 包括字符测试,字符串拷贝,比较,查找,连接与分割等。
     * 数据转换,包括字母大小写转换,字符串转换与整数,浮点数之间的转换。
     * 内存分配与释放。
     * 时间和日期,包括时间和日期的获取,显示以及时间的计算等。
     * 其他应用,包括命令行参数的分析,用户和用户组操作以及环境变量操作。
    9.1 字符串操作 『
     9.1.1 字符测试
       #include <ctype.h>
       int isalpha(int c)  测试字符是否为英文字母
       int isdigit(int c)  测试字符是否为数字
     9.1.2 字符串初始化
       #include <string.h>
       void *memset(void *buffer, int c, int count); 将buffer所指向内存区域的前count字节设为字符c。
     9.1.3 字符串的复制
       (1), char *strcpy(char *dest, char *src); 
       (2), char *strdup(char *s);
       (3), void *memcpy(void *dest, const void *src, size_t n);
           功能是将参数 src 所指向的内存区域复制 count 字节到参数 dest 所指向的内存区域中,参数 src 和 dest 所指向的内存区域不可以重叠,函数返回指向 dest 的指针。而 strcpy  函数一旦遇到字符串结束符立即停止。memcpy 则不是,它不检查复制的具体内容。
       (4), void *memmove(void *dest, const void *src, size_t count);
           功能是将参数 src 所指向的内存区域复制 count 字节到参数 dest 所指向的内存区域中,返回指向dest的指针。但是它与 memcpy 的主要差别在于参数src 和 dest 所指向的内存区域可以重叠。
      9.1.4 字符串比较
       (1), int strcmp(const char *s1, const char *s2);
       (2), int strncmp(const char *s1, const char *s2, size_t n);
       (3), int strcasecmp(const char *s1, const char *s2);
       (4), int strncasecmp(const char *s1, const char *s2, size_t n);
       (5), int memcmp(const void *s1, const void *s2, size_t n);
           功能是比较参数 s1 和 s2 所指向内存区域的前 count 个字节,不管里面有没有字符串结束符。
      9.1.5 字符/字符串查找
       (1) char *index(const char *s, int c);
           char *rindex(const char *s, int c);
       (2) strchr / strrchr
           char *strchr(const char *s, int c);
           char *strrchr(const char *s, int c);
            index(s, '\0'); rindex(s, '\0'); 对于 strchr / strrchr 是不可以的。
       (3) char *strstr(const char *haystack, const char *needle);
     9.1.6 字符串的连接与分割
       (1), char *strcat(char *dest, const char *src); 注意 : 必须确保 dest 指向的缓冲区足够大。
            char *strncat(char *dest, const char *src, size_t n); src前n个字符没结束符,则接后自己加
       (2), char *strtok(char *str, const char *delim);
        可以指定一个或多个分隔符。如果在字符串中找到任何一个分隔符,则将其更改为字符串结束符。
        第一次调用该函数时,参数str必须设为要分割的字符串,以后调用时设为NULL。
        strtok 函数每次调用成功后,返回下一个分割的字符串指针,如果已无从分割则返回NULL。
       #include <iostream>
       #include <cstring>
       #include <cstdio>
       using namespace std;
    
       int main() {
           char str[] = "Linux C Programming";
           char *p;
           p = strtok(str, " ");
           while(p != NULL) {
               printf("%s\n", p);
               p = strtok(NULL, " ");
           }
           printf("str : %s\n", str);
           return 0;
       }
    -9.2 数据转换  『英文字母大小写转换,字符串与整数,浮点数之间』
      #include <ctype.h>
      int toupper(int c);
      int tolower(int c);
      #include <stdlib.h>
      int atoi(const char *nptr);
      long atol(const char *nptr);
       对字符串进行扫描,直到出现数字或正负号才开始转换,之后出现非数字或字符串结束符即结束转换,只10进制。
      double atof(const char *nptr);
      double strtod(const char *nptr, char **endptr);
    - char *gcvt(double number, size_t ndigits, char *buf);
    -9.3 内存分配与释放
      内存分配与释放的函数有  alloca, malloc, calloc, realloc, 以及 free 函数。
      #include <stdlib.h>
      void *alloca(unsigned size);
      void *malloc(unsigned size);
      void *calloc(size_t nmemb, size_t size);
      void free(void *ptr);
      void *realloc(void *ptr, size_t size);
    -9.4 时间和日期
      1, time 函数
       #include <time.h>
       time_t time(time_t *t);
      2, gettimeofday 函数
       #include <unistd.h>
       #include <sys/time.h>
       int gettimeofday(struct timeval *tv, struct timezone *tz);
     9.4.2 时间和日期的显示
      ctime, gmtime, asctime 函数用来将时间和日期转换为字符串格式。
      时间的计算 double difftime(time_t time1, time_t time0);
    -9.5 其他应用
      其他应用包括 : 命令行参数分析,用户,用户组操作以及环境变量设置等。
     9.5.1 命令行参数分析
      int main(int argc, char **argv) 或 int main(int argc, char *argv[])
        文件名本身作为第一个参数,其后的参数依次赋给 agrc.
      #include <unistd.h>
      int getopt(int argc, char *const argv[], const char *optstring); optstring为选项字符串。
       optarg, optind, optopt;
     9.5.2 用户和用户组操作
      相关的函数 :getuid, getgid, getlogin, getpwent, getpwnam, getutent等。
       1, #include <unistd.h>
          #include <sys/types.h>
          uid_t getuid(void);  获取当前用户标识符。
       2, gid_t getgid(void);
       3, char *getlogin(void) 获取当前用户的帐号名称。
       4, #include <pwd.h>
          #include <sys/types.h>
          struct passwd *getpwent(void); 可以读取 /etc/passwd 所有用户账户信息。  endpwent.
       5, #include <pwd.h>
          #include <sys/types.h>
          struct passwd getpwnam(const char* name);
       6, #include <utmp.h>
          /var/run/utmp 记录着当前登陆用户的信息,可以用该函数读取。
          struct utmp *getutent(void);     endutent.
      9.5.3 环境变量操作
       环境变量是包含系统环境信息的字符串,可以作用于用户的整个工作空间。 getenv, putenv, setenv;
       获取更改增加环境变量。
       1, #include <stdlib.h>
          char *getenv(const char *name);  例如 :char *p = getenv("SHELL");
       2, putenv 函数用于更改或增加环境变量
          int putenv(const char *string);
       3, int setenv(const char *name, const char *value, int overwrite);
           参数 overwrite 用来设定是否替换已存在环境变量的内容。
    
  • 相关阅读:
    Linux学习之网络基础
    C# 随笔
    最牛B的编码套路
    c++ Primer 第七章不熟悉知识点总结
    oracle求表的倒数二行数据
    c++ Primer 第六章不熟悉知识点总结
    c++ Primer 第五章不熟悉知识点总结
    c++ Primer 第四章不熟悉知识点总结
    c++ Primer 第三章不熟悉知识点总结
    骑驴找马
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786968.html
Copyright © 2011-2022 走看看