亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ftell函數的問題?

ftell函數的問題?

墨色風雨 2019-04-03 11:07:16
#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){FILE* file = NULL;if ((file = fopen("log", "w+")) == NULL){ perror("fopen");return -1; } char *buf = "qwertyuiopasdfg";int fd = fileno(file);while (*buf != '\0'){ write(fd, buf++, 1); printf("length = %ld\n", ftell(file));} return 0;}為什么 輸出的長度都為1呢,write寫入后 文件指針不是向后移了嗎??
查看完整描述

4 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

write和fwrite都可以實現你的意圖。你的程序在TC 2.0調試通過,運行結果輸出文件LOG,文件字節數15字節。每次輸出字節1的原因是你在write中語句中指定每次輸出1字節。

查看完整回答
反對 回復 2019-04-09
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

while (*buf != '\0')
{
write(fd, buf++, 1);
printf("length = %ld\n", ftell(file));
}
while每次循環都會輸出length,而write(fd, buf++, 1); 中你定義的長度是1,所以每次輸出都是1.

查看完整回答
反對 回復 2019-04-09
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

函數名: fscanf

功 能: 從一個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與fgets有區別,fgets遇到空格不結束。

返回值:整型,成功返回讀入的參數的個數,失敗返回EOF(-1)。

用法:

1 int fscanf(FILE*stream,constchar*format,[argument...]);

FILE *stream:文件指針;

char *format:格式字符串;

[argument...]:輸入列表。

例如:

FILE* fp;
char a[10];
int b;
double c;
fscanf(fp , "%s %d %lf" , a , &b , &c);
和scanf一樣,格式化串的空格不代表讀取的子串有空格,存放讀取數據的參數都是指針。

擴展閱讀,C語言中文件的讀取和寫:
FILE *pFile=fopen("1.txt","r"); //獲取文件的指針
char *pBuf; //定義文件指針
fseek(pFile,0,SEEK_END); //把指針移動到文件的結尾 ,獲取文件長度
int len=ftell(pFile); //獲取文件長度
pBuf=new char[len+1]; //定義數組長度
rewind(pFile); //把指針移動到文件開頭 因為我們一開始把指針移動到結尾,如果不移動回來 會出錯
fread(pBuf,1,len,pFile); //讀文件
pBuf[len]=0; //把讀到的文件最后一位 寫為0 要不然系統會一直尋找到0后才結束
MessageBox(pBuf); //顯示讀到的數據
fclose(pFile); // 關閉文件



查看完整回答
反對 回復 2019-04-09
  • 4 回答
  • 0 關注
  • 918 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號