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)
#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 ]...); // 从一个字符串中读进与指定格式相符的数据(二进制)
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