当前位置:首页 > 芯闻号 > 充电吧
[导读] 1 #include 2 #include 3 int main(int argc, char *argv[]) 4 { 5 char buf[1024];





  1 #include 
  2 #include 
  3 int main(int argc, char *argv[])
  4 {
  5     char buf[1024];
  6     FILE *fp ;
  7     FILE *dst_fp;
  8     int i,j;
  9     char *line;
 10     char file_name[256];
 11     int space_line = 2;
 12     int skip_line = 3;
 13 
 14     for(i = 0; i < argc; i++) {
 15 
 16         if(strcmp(argv[i],"-i") == 0){
 17             strcpy(file_name,argv[i+1]);
 18             break;
 19         }
 20     }
 21     
 22     if((fp = fopen(file_name,"rb"))==NULL)
 23         printf("Open file error!n");
 24 
 25     dst_fp = fopen("processed_by_c.txt","wb");
 26     
 27     i=0;
 28     
 29     fseek(fp, 0, SEEK_SET);
 30     
 31     while((line = fgets(buf,1024,fp)) != NULL){
 32         fputs(line,dst_fp);
 33         i++;
 34         if(i == skip_line) {
 35             i=0;
 36             j=0;
 37             while(j < space_line) {
 38                 j++;
 39                 fputc('r',dst_fp);
 40                 fputc('n',dst_fp);
 41             }
 42         }
 43         fflush(dst_fp);
 44     }
 45     fclose(fp);
 46     fclose(dst_fp);
 47     return 0;
 48 
 49 }
                        
                                                                                                                     10,1          T

在windows下生成了一个数据文件a.txt, 准备在linux下进行处理并且生成一个新的文件。具体处理是将文件每隔n行空m行。

源代码如上:

经过测试发现最终生成的文件为乱码,找了好久排除了程序的逻辑问题。自己用vim重新生成了一个txt文件测试发现没有问题。于是很自然想到了字符编码的问题。

通过运行hexdump a.txt发现开头是0xfeff,而且每个字符前面都是0x00,占两个字节,明显的unicode编码,而用vim在linux下生成的确没有。

于是通过命令iconv -f unicode -t ascii -o a_new.txt a.txt  先将原来的unicode文件转化为ascii编码的文件。

运行程序,OK




本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在工业质检、安防巡检等边缘场景中,智能相机需要同时完成图像采集、实时处理和AI推理。传统方案要么用高性能CPU(功耗高),要么用NPU(灵活性差)。FPGA+Linux的异构架构正好取长补短:FPGA负责像素级流水线处理...

关键字: FPGA Linux 智能相机

在现代操作系统的运行逻辑中,内存资源的分配与调度直接决定了整个系统的运行效率和稳定性,而Linux的虚拟内存空间管理体系,正是支撑多进程并发运行、保障内存资源高效复用的核心机制。很多开发者在日常开发中只关注malloc这...

关键字: Linux 虚拟内存

在之前的系列底层技术文章中,我们先后探讨过CPU Cache伪共享、内存模型、堆与栈内存差异、高效内存池等系统级核心主题,而挂载作为Linux文件系统体系中最基础也最容易被误解的核心机制,是所有存储设备能够被用户正常访问...

关键字: Linux 挂载

在我的上一篇项目文章中,我介绍了使用 AMD 新的 Yocto 工作流结合 EDF(嵌入式开发框架)为 Kria SoM 构建嵌入式 Linux 镜像的基本步骤。该项目详细说明了克隆 AMD Yocto 项目的流程,包括...

关键字: 嵌入式 Linux FPGA

2026年的PC市场,正经历着一场从硬件到软件的全面涨价潮。

关键字: PC 内存 微软 Windows

在Linux系统中,我们在终端输入一条命令按下回车,几毫秒后程序就开始运行。很多开发者每天都在执行各类可执行文件,却很少深究背后的细节:磁盘上一个静态的ELF二进制文件,是如何一步步变成内存中活跃的进程?为什么物理内存明...

关键字: Linux 虚拟内存

在嵌入式Linux开发中,同时支持多款ARMv8-A硬件平台是一个常见但不易做好的需求。每款开发板都有自己独特的Bootloader、内核配置、设备树和用户态驱动,若为每款板卡独立维护一套构建配置,维护成本会随硬件种类线...

关键字: Linux Yocto

嵌入式Linux系统的构建是一场与资源的持久博弈。当项目只需要网络通信与GPIO控制时,承载完整桌面环境的发行版无异于用卡车运信封。Buildroot作为一套基于Makefile和Kconfig的自动化构建工具,以&qu...

关键字: Buildroot Linux

IBM Z和LinuxONE 5强大的单机柜和机架式产品,以及全新的AI与自动化软件升级,助力企业更灵活地部署工作负载。 北京2026年7月8日 /美通社/ -- ...

关键字: IBM Linux 数据中心 BSP

本项目的目标是使用 Buildroot 为树莓派 Zero W 开发一个定制的嵌入式 Linux 发行版。系统设计仅包含应用程序所需的基本组件,例如 Wi-Fi 连接、SSH 和 SCP 访问、I2C 支持以及 Pyth...

关键字: Linux 树莓派 显示屏 SSD1306
关闭