Linux C 基本应用_09

来源:互联网 发布:crm软件在线试用 编辑:程序博客网 时间:2024/05/21 17:21
编辑器 + 编译器 + 调试工具 + 项目管理软件。 * 字符串操作, 包括字符测试,字符串拷贝,比较,查找,连接与分割等。 * 数据转换,包括字母大小写转换,字符串转换与整数,浮点数之间的转换。 * 内存分配与释放。 * 时间和日期,包括时间和日期的获取,显示以及时间的计算等。 * 其他应用,包括命令行参数的分析,用户和用户组操作以及环境变量操作。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 用来设定是否替换已存在环境变量的内容。
原创粉丝点击