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 用来设定是否替换已存在环境变量的内容。
原文地址:https://www.cnblogs.com/robbychan/p/3786968.html