一、字符串操作函数
1、取字符串的长度
#include<string.h>
size_t strlenth(const char *s);
strlenth 函数返回s所指的字符串长度,该函数从s所指的第一个字符开始找‘\0’,一旦找到就返回,返回的长度不包括'\0'。
2、字符串拷贝
#include<string.h>
void *memcpy(void *dest, const void *src, size_t n);
void *memmove(void *dest, const void *src, size_t n);
memcpy函数从src所指的内存地址拷贝n个字节到dest所指的内存地址,和strncpy不同,memcpy不是遇到‘\0’,就结束,而是一定会拷贝完n个字符串。memcpy的src和dest所指的内存区间如果重叠则无法保证正确复制。但是memmove则可以完成这个复制。
例如:
memcpy(buf + 1,buf, 13 );
上面的例子中,应该用memmove函数,这个例子是错误的。但是,也可以借助于中间变量用memcpy完成上面的用法。
注意:以str命名开始的函数以\0结束,而以mem开始的函数则不关心\0字符。
3、字符串连接
#include<string.h>
char *strcat (char *dest, const char *src);
char *strncat(char *dest, const char *src, size_t n);
4、字符串比较
#include<string.h>
int memcmp(const void *s1, const void *s2, size_t n);
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
5、字符串搜索
#include<string.h>
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
二、文件操作
文件可以分为文本文件(text file)和二进制文件(binary file)两种。源文件是文本文件,而目标文件、可执行文件和库文件是二进制文件。
1、fopen和fclose
#include<stdio.h>
FILE *fopen(const char *path, const char *mode);
if((fp = fopen("test.in", "r") == NULL))
{
printf("error open file!\n");
exit(1);
}
.......
int fclose(FILE fp);
"w" 只写。"r" 只读,文件必须存在
2、以字节为单位的io操作
#include<string.h>
int fgetc(FILE *stream);
int getchar(void);
调用getchar()相当于调用fgetc(stdin).
要用fgetc()函数读一个文件,该文件的打开方式必须是可读的。如果读到文件的末尾则返回EOF(即为-1),如果:
unsigned char c = fgetc(fp);
那么,c字节是无法区分是否读到文件的末尾了。unsigned的数没有符号位,因此不能区分是否读到文件的末尾。c应该赋值为int类型。
3、fputc putchar
#include<stdio.h>
int fputc(int c, FILE *stream);
int putchar(int c);
putchar(c)相当于fputc(c, stdout).