×

ftell返回值

ftell返回值(C语言获得文件大小时ftell始终返回-1)

admin admin 发表于2023-12-09 08:54:41 浏览29 评论0

抢沙发发表评论

这篇文章给大家聊聊关于ftell返回值,以及C语言获得文件大小时ftell始终返回-1对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

C语言获得文件大小时ftell始终返回-1

long GetFileLength(FILE* fileptr) { if (fileptr == NULL) return 0; /*fileptr=NULL是赋值语句,应为==*/ long fOffset = ftell(fileptr); if (fseek(fileptr, 0, SEEK_END)《0) return 0; /*fseek函数失败时返回负值*/ long file_size = ftell(fileptr); fseek(fileptr, fOffset, SEEK_SET); return file_size;}

来个大神帮我调试一下吧现在遇到的问题就是ftell怎么读文件长度都是-1,后续就不知道怎么办了

#include 《stdio.h》#include 《stdlib.h》                   //最好加上这个头文件,里面有malloc和free函数int countKeyChar(char *buffer, char keyChar){int i;int cnt = 0;for(i=0; buffer != ’\0’; i++){if(buffer = keyChar){cnt++;}}return cnt;}FILE *openFile(char *fileName, char *openMethod){FILE *fp;if((fp = fopen(fileName, openMethod)) == NULL)   //这边,用括号将fp = fopen括起来{printf("Cannot open file!\n");return 0;}return fp;}void closeFile(FILE *fp){if(fp == NULL){printf("No file!\n");return;}fclose(fp);}int getFileLength(FILE *fp){int len;fseek(fp, 0, SEEK_END);  len = ftell(fp);printf("%d.......",len);return len;}char *readData(FILE *fp, int n){int i;char *buffer;buffer = (char *)malloc(sizeof(char) * n + 1);for(i=0; i《n; i++){buffer = fgetc(fp);}buffer = ’\0’;return buffer;}int main(){FILE *fp;  char keyChar; char *buffer;  char fileName;int fileLen; int cnt;     printf("Input file name: ");scanf("%s", fileName);getchar();  printf("Input key character: ");scanf("%c", &keyChar);fp = openFile(fileName, "r");fileLen = getFileLength(fp); buffer = readData(fp, fileLen);  cnt = countKeyChar(buffer, keyChar);  printf("The number of \’%c\’: %d\n", keyChar, cnt);free(buffer);  closeFile(fp);system("pause");return 0;}

你再试试,程序本身没什么问题,修改后的代码在vs2005中,可以获取文件大小

如果你还想了解更多这方面的信息,记得收藏关注本站。