C函数

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

文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。

 

void exit(int status);      (stdlib.h)

功 能: 关闭所有文件,终止正在执行的进程。
exit(1)表示异常退出.这个1是返回给操作系统的。
exit(x)(x不为0)都表示异常退出
exit(0)表示正常退出
 
int execlp(const char * file,const char * arg,....);    (unistd.h)
execlp()函数属于exec()函数族(exec()族函数用一个新的进程映像替换当前进程映像)它是execve(2)函数的前端
相关函数:fork,execl,execle,execv,execve,execvp
execlp()会从PATH 环境变量所指的目录中查找符合参数file的文件名,找到后便执行该文件,然后将第二个以后的参数当做该文件的argv[0]、argv[1]……,最后一个参数必须用空指针(NULL)作结束。如果用常数0来表示一个空指针,则必须将它强制转换为一个字符指针,否则将它解释为整形参数,如果一个整形数的长度与char * 的长度不同,那么exec函数的实际参数就将出错。如果函数调用成功,进程自己的执行代码就会变成加载程序的代码,execlp()后边的代码也就不会执行了.
 
uid_t getuid(void);      (sys/types.h和unistd.h)
32位整型,函数返回一个调用程序的真实用户ID。
gid_t getgid(void);   返回组ID
pid_t getpid(void);      (unistd.h)
getpid函数用来取得目前进程的进程ID
 
fork – 创建新进程;exit – 终止进程;exec – 执行一个应用程序wait – 将父进程挂起,等待子进程终止;getpid – 获取当前进程的PID;nice – 改变进程的优先
 
signal(SIGINT, sig_int);    捕获信号,调用sig_int函数。
 
long sysconf (int name);   (unistd.h) 
sysconf() 返回选项 (变量) 的当前值,这个值可配置的但也是受系统限制的。在成功完成的情况下,sysconf() 返回变量的当前值。该值受到的限制将少于编译时 <limits.h>, <unistd.h> 或 <time.h> 中可用的对应值。大多数这些变量的值在调用进程的生存时间内不变。
如果出错,那么函数返回 -1 ,适当地设置 errno 。当没有错误发生时, -1 也是一个合法的返回值。因此,程序要检查错误,应该在调用 sysconf() 之前将 errno 设置为 0 ,然后,如果返回 -1,则检验到错误。

 

#include <string.h>

void *memset(void *s, int ch, size_t n);

void *memcpy(void *dest, const void *src, size_t n); 

int memcmp(const void *buf1, const void *buf2, unsigned int count);

 

GetProcAddress()   检索指定的动态链接库(DLL)中的输出库函数地址。

 

#include <stdlib.h>

int *p = (int*)malloc(sizeof(int) * 1024);

 

分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。

首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。

#include <string.h>

char s[] = "1,23|32|41|5";

char delims[] = ",";

char *result = NULL;

int num;

result = strtok(s, delims);

num = atoi(result);

char delims2[] = "|";

result = strtok(NULL, delims2);

while (NULL != result){

    num = atoi(result);

    result = strtok(NULL, delims2);   //  顺序很重要

}

 

atoi (表示 alphanumeric to integer)是把字符串转换成整型的一个函数。

 

int sscanf(const char *buffer,const char *format,[argument ]...); // 从一个字符串中读进与指定格式相符的数据(二进制)

sscanf("1 2 3","%d %d %d",buf1, buf2, buf3); 成功调用返回值为3,即buf1,buf2,buf3均成功转换。
sscanf("1 2","%d %d %d",buf1, buf2, buf3); 成功调用返回值为2,即只有buf1,buf2成功转换。
 

int snprintf(char *str, size_t size, const char *format, ...); // 将可变个参数(...)按照format格式化成字符串,然后将其复制到str中

char str[10]={0};

int nLen=snprintf(str,sizof(str),"0123456789012345678"); // str=012345678, nLen=19

 

posted @ 2015-10-31 21:24  LarryKnight  阅读(222)  评论(0编辑  收藏  举报