1、使用fseek函數(shù)即可更改文件指針的位置。
創(chuàng)新互聯(lián)建站專業(yè)提供成都溫江機房服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買成都溫江機房服務(wù),并享受7*24小時金牌售后服務(wù)。
函數(shù)名: fseek
功 能: 重定位流上的文件指針
用 法: int fseek(FILE *stream, long offset, int fromwhere);
描 述: 函數(shù)設(shè)置文件指針stream的位置。如果執(zhí)行成功,stream將指向以fromwhere為基準,偏移offset個字節(jié)的位置。如果執(zhí)行失敗(比如offset超過文件自身大小),則不改變stream指向的位置。
返回值: 成功,返回0,否則返回其他值。
2、例子:
fseek(fp,100L,0);//把文件內(nèi)部指針移動到離文件開頭100字節(jié)處;
fseek(fp,100L,1);//把文件內(nèi)部指針移動到離文件當前位置100字節(jié)處;
fseek(fp,-100L,2);//把文件內(nèi)部指針退回到離文件結(jié)尾100字節(jié)處。
C語言文件定位,主要依靠fseek函數(shù)實現(xiàn),具體代碼如下,
#include stdio.h
int main(int argc, char *argv[])
{
FILE *fp=NULL;
long len=0L;//文件長度
fp=fopen("test.dat","rb");//假設(shè)當前目錄有test.dat文件
if(!fp)//檢查文件打開是否正常
{
printf("文件打開失敗,程序退出!\n");
exit(1);
}
fseek(fp,0L,SEEK_END);//文件定位到文件末尾
len=ftell(fp);//獲取文件長度
if(len/10240)
printf("文件大小為%ldKB!\n",len/1024);
else
printf("文件大小為%ldB!\n",len);
rewind(fp);//文件指針移到開始處
if(fp)//關(guān)閉文件
{
fclose(fp);
fp=NULL;
}
return 0;
}
int fseek( FILE *stream, long offset, int origin );函數(shù)fseek()為文件指針stream設(shè)置位置數(shù)據(jù)。origin的值應(yīng)該是下列值之一,
SEEK_SET(從文件的開始處開始搜索)
SEEK_CUR(從當前位置開始搜索)
SEEK_END(從文件的結(jié)束處開始搜索)
fseek()成功時返回0,失敗時返回非零。
#includestdio.h
#includestring.h
int?findstr(char?*s_str,char?*d_str);
int?main(void)?{
char?s1[80],s2[80];
int?n;
printf("請輸入一個字符串:");
gets(s1);
printf("請輸入你要查找的字符串:");
gets(s2);
n=findstr(s1,s2);
printf("%s在%s里共有%d個\n",s2,s1,n);
return?0;
}
int?findstr(char?*s_str,char?*d_str)?{
int?i,j,k,count=0;
char?temp[80];
int?length=strlen(d_str);
for(i=0;istrlen(s_str);i++)?{
k=0;
for(j=i;ji+length;j++)
temp[k++]=s_str[j];
temp[k]='\0';
if(!strcmp(temp,d_str))?count++;
}
return?count;
}
我知道了,你不要用scanf()來完成字符串的輸入,因為scanf()默認空格,回車,
制表符
都是字符串結(jié)束的標志
所以
用gets()函數(shù),它允許輸入空格,只有回車后,字符串才結(jié)束輸入
程序如下
#includestdio.h
main()
{
int
i;
char
a[50];
定義數(shù)組
gets(a);
輸入字符串
while(a[i]!='a')
判斷位置
i++;
printf("位置在%d位",i+1);
}
如果哪有看不懂的,可以補充