C语言文件指针的使用...long file_size2(char * filename)

150 篇文章 0 订阅


#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
int main(int argc, const char * argv[])
{

	FILE * fp = NULL;

	// "w" 写 , 如果文件不存在, 可创建.
	fp = fopen("/Users/stone/Desktop/c.txt", "r+");

	char s = 'c';
	if (fp != NULL) {
		printf("open file success\n");
		fputc(s, fp);
	}
	else {
		printf("open file failed\n");
		printf("Press any key to exit\n");
		getchar();

		// #include <stdlib.h> 要导入, 不然有警告 隐式声明, 看着不爽
		exit(1);
	}

	//		int a = fgetc(fp); "r+" 可以读写 为什么 fgetc 读取错误呢??? a = 127
	//		printf("%c\n", toascii(a));

	fclose(fp);
	//********* 读取字符 *************** stone ***
	FILE * ff = fopen("/Users/stone/Desktop/c.txt", "r");
	int ch = fgetc(ff);
	// #include <ctype.h> 才能用 toascii
	printf("%c\n", toascii(ch)); // 也可以直接写 char ch2 = ch & 0x7F (因为ascii只有 0~127)
	// 0111 1111 & 0110 0011 = 0110 0011

	// putc(ch, ff);

	fclose(ff);

	//******* 写入一个字符串 ***************** stone ***

	FILE * fw = fopen("/Users/stone/Desktop/d.txt", "w");
	char str[] = "i love Chian !";
	/*
     char 占一个字节
     int 占四个字节
     当int变量值 处于 -128到127之间时,int char可以直接互相赋值!
     */

	for (int i = 0; i < strlen(str); i++) {

		fputc(str[i], fw);
	}

	fclose(fw);

	//******** 读取字符串 **************** stone ***
	FILE * fd = fopen("/Users/stone/Desktop/d.txt", "r");
	char tt[100];
	int i = 0;
	char cc = fgetc(fd);
	while (cc != EOF) {
		tt[i++] = cc;
		putchar(cc);
		cc = fgetc(fd);
	}
	printf("\n");

	printf("%s\n", tt);

	fclose(fd);

	//******* 获取文件的大小 ***************** stone ***

	long file_size2(char * filename);

	long count = file_size2("/Users/stone/Desktop/d.txt");
	printf("%ld\n", count);

	return 0;
}
long file_size2(char * filename)
{
	struct stat statbuf;
	stat(filename, &statbuf);
	long size = statbuf.st_size;

	return size;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值