1、函数strcmp用法:
原型:extern int strcmp(char *s1,char * s2);
用法:#include <string.h>
或者 #include <string>
加上 using namespace std;
功能:比较字符串s1和s2。
说明:
当s1<s2时,返回值<0
当s1=s2时,返回值=0 //注意相等返回值是0
当s1>s2时,返回值>0
举例:
// strcmp.c
#include <syslib.h>
#include <string.h>
main()
{
char *s1="Hello, Programmers!";
char *s2="Hello, programmers!";
int r;
clrscr();
r=strcmp(s1,s2);
if(!r)
printf("s1 and s2 are identical");
else
if(r<0)
printf("s1 less than s2");
else
printf("s1 greater than s2");
getchar();
return 0;
}
注意,strcmp 的参数 可以理解成 :如果s1 - s2 = 0,则返回值是0; 如果s1 - s2 < 0, 则返回值小于0; 如果s1 - s2 > 0,则返回值大于0;
2、函数fseek用法:
int fseek(FILE *stream, long offset, int fromwhere);
第一个参数file指针
第二个参数移动的偏移量
第三个参数移动到哪里
分别用3个宏
SEEK_SET 既0 文件开头
SEEK_CUR 既1 文件当前位置
SEEK_END 既2 文件结尾
但不推荐用数字 最好用宏
简言之:
fseek(fp,100L,SEEK_SET);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,SEEK_CUR);把fp指针移动到离文件当前位置100字节处;
fseek(fp,100L,SEEK_END);把fp指针退回到离文件结尾100字节处。
此函数常用来计算流的长度:
int filesize = fseek( fp, 0, SEEK_END );
fseek( fp, 0, SEEK_SET );
注意:
fseek(文件类型指针fp, 位移量,起始点);
函数功能:把与fp有关的文件位置指针放到一个指定位置。
其中,“位移量”是long型数据,它表示位置指针相对于“起始点”移动的字节数。
如果 位移量 是一个正数,表示从“起始点”开始往文件尾方向移动;如果 位移量 是一个负数,则表示从“起始点”开始往文件头方向移动。
3、ftell函数用法:
函数名: ftell
功 能: 返回当前文件指针 (注意:返回的是文件的指针,指向第几个字节)
用 法: long ftell(FILE *stream);
程序例:
#include <stdio.h>
int main(void)
{
FILE *stream;
stream = fopen("MYFILE.TXT", "w+");
fprintf(stream, "This is a test");
printf("The file pointer is at byte /
%ld/n", ftell(stream)); //返回14
fclose(stream);
return 0;
}
ftell() 和 fseek() 用长整型表示文件内的偏移 (位置), 因此, 偏移量被限制在 20 亿 (231-1) 以内
综合程序例子:
#include "stdafx.h"
#include <stdio.h>
#include <process.h>
long filesize(FILE *stream);
int main(void)
{
FILE *stream;
stream = fopen("MYFILE.TXT", "w+");
fprintf(stream, "This is a test");
fflush(stream);
fclose(stream);
//上面的操作是首先打开文件,然后往文件里面写字符串;
FILE *fp = fopen("MYFILE.TXT", "r");
fseek(fp, 3, SEEK_SET); //fseek可以改变文件指针的偏移;这里的设置就是把文件指针移到距离文件开头3个字节处;
char buffer[128] = "";
fread(buffer,1,20,fp); //这里是读数据块到内存中,参数中1是数据块的字节长度,20是读取的字节块数据数;
printf("%s/n",buffer);
//上面的操作是把写在文件里面的字符串读到内存中;
//printf("Filesize of MYFILE.TXT is %ld bytes/n", filesize(stream));
fclose(fp);
return 0;
}
long filesize(FILE *stream)
{
long curpos, length;
curpos = ftell(stream); //curpos:14
int a = fseek(stream, 0L, SEEK_END);
length = ftell(stream);
//printf("%s",curpos);
int b = fseek(stream, curpos, SEEK_SET);
return length;
}
注意,文件的读取,必须先从硬盘读到内存中,然后才能打印出来;比如printf()函数,只能打印出内存的东西,不能直接对硬盘文件操作;
曾经 FILE *p = NULL; 然后试图这样打印:printf(p);是不正确的;因为p是文件指针,不是内存指针;