文件操作函数(读写)
文件文本排序:
数组冒泡:
#include<stdio.h> void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp; } void bubble(int *p,int n) { int i; int j; for(i = 0; i < n; i++) { for(j = 1; j < n - i; j++) { if(p[j - 1] > p[j]) { swap(&p[j-1],&p[j]); } } } } int main() { int arr[10] = {4,6,3,7,8,5,12,67,34,56}; bubble(arr,10); int i; for(i = 0; i < 10 ; i++) { printf("%d ",arr[i]); } printf("\n"); return 0; }
文件数据排序
#include<stdio.h> #include<string.h> void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp; } void bubble(int *p,int n) { int i; int j; for(i = 0; i < n; i++) { for(j = 1; j < n - i; j++) { if(p[j - 1] > p[j]) { swap(&p[j-1],&p[j]); } } } } int main() { int array[10] = {0}; int i; char buf[100]; int index = 0; FILE* p =fopen("./file.txt","r"); if(NULL == p) { printf("error\n"); } else { while(!feof(p)) { memset(buf,0,sizeof(buf)); fgets(buf,sizeof(buf),p); array[index] = atoi(buf); index++; } fclose(p); } index--; bubble(array,index); p = fopen("./b.txt","w"); printf("index = %d\n",index); for(i = 0; i < index ; i++) { memset(buf,0,sizeof(buf)); sprintf(buf,"%d\n",array[i]); fputs(buf,p); //printf("%d ",array[i]); } fclose(p); printf("i = %d\n",i); return 0; }
如果文件数据过大,就不能在栈中建立一个数组,考虑使用堆
#include<stdio.h> #include<string.h> #include<stdlib.h> void swap(int *a,int *b) { int temp = *a; *a = *b; *b = temp; } void bubble(int *p,int n) { int i; int j; for(i = 0; i < n; i++) { for(j = 1; j < n - i; j++) { if(p[j - 1] > p[j]) { swap(&p[j-1],&p[j]); } } } } int main() { int i; char buf[100]; int index = 0; FILE* p =fopen("./file.txt","r"); if(NULL == p) { printf("error\n"); } //else { while(!feof(p)) { memset(buf,0,sizeof(buf)); fgets(buf,sizeof(buf),p); index++; } fclose(p); } int *array = calloc(sizeof(int),index); index = 0; p =fopen("./file.txt","r"); if(NULL == p) { printf("error\n"); } //else { while(!feof(p)) { memset(buf,0,sizeof(buf)); fgets(buf,sizeof(buf),p); array[index] = atoi(buf); index++; } fclose(p); } index--; bubble(array,index); p = fopen("./b.txt","w"); printf("index = %d\n",index); for(i = 0; i < index ; i++) { memset(buf,0,sizeof(buf)); sprintf(buf,"%d\n",array[i]); fputs(buf,p); //printf("%d ",array[i]); } fclose(p); printf("i = %d\n",i); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)