Para leer archivos TXT en lenguaje C, requisitos: leer por línea y luego enviar al archivo TXT especificado por línea

Para leer archivos TXT en lenguaje C, requisitos: leer por línea y luego enviar al archivo TXT especificado por línea

Una revisión:
los problemas encontrados y las necesidades de la situación:

  • Hay 629 datos sobre desastres por rayos en Beijing de 2002 a 2013 obtenidos del sitio web Beijing Lightning Disaster Detection. Para realizar la agrupación de texto, es necesario distribuir 629 datos en un archivo txt en 629 archivos txt. , La clasificación manual tomará al menos 5 horas. Para ahorrar tiempo, elija el lenguaje C para dividir 629 datos en 629 archivos txt para preparar los datos para futuros agrupamientos de texto.
    Como no he leído el lenguaje C durante mucho tiempo, he olvidado las funciones de entrada y salida de archivos relevantes, por lo que puedo aprovechar esta oportunidad para revisar los conocimientos relevantes.

Las principales funciones utilizadas :

  • fopen
  • feof
  • fgets
  • fputs
  • fclsoe

Para realizar la operación de autoincremento del nombre del archivo de salida, use la función sprintf como un comando de formato de cadena. De hecho, hay muchos pozos en el medio. ¡Adjunte el código en forma de blog para registrarlo!
El tiempo es relativamente corto, por lo que el trabajo relacionado de optimización y embellecimiento del código no está terminado.

el código se muestra a continuación

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char * ReadSpeacialLine(int i)
{
    
    
    char filename[] = "C:/Users/zhangbin/Desktop/tet/test.txt"; //文件名
    FILE *fp;
    int WhichLine=i;             //指定要读取哪一行
    int CurrentIndex=0;             //当前读取的行
    static char StrLine[1024];             //每行最大读取的字符数,可根据实际情况扩大
    if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
    {
    
    
        printf("error!");
        return NULL;
    }

    while (!feof(fp))
    {
    
    

        if (CurrentIndex==WhichLine)
        {
    
    
            fgets(StrLine,1024,fp);  //读取一行
            printf("%s", StrLine); //输出
            return StrLine;
        }
        fgets(StrLine,1024,fp);  //读取一行,并定位到下一行
        CurrentIndex++;

        //printf("%s", StrLine); //输出
    }
    fclose(fp);                     //关闭文件
    return NULL;
}

int main()
{
    
    
    FILE * fd;
    char * sBuf ;//= (char *)malloc(1024);
    char * fileName = "C:/Users/zhangbin/Desktop/tet/";
    char  sName[1024];
    //int num = 1;
    //sprintf(sName,"%s%d.txt",fileName,num);
    //printf("%s",sName);
    //输出位置
    for(int i = 0; i < 629; i++)
    {
    
    
        int num = i + 1;
        sBuf = ReadSpeacialLine(i);
        printf("%s",sBuf);
        sprintf(sName,"%s%d.txt",fileName,num);   //字符串格式化输出
        printf("%s",sName);
        fd = fopen(sName,"w");
        fputs(sBuf,fd);
        fclose(fd);
    }

   // free(sBuf);
    return 0;
}

Datos originales:
Inserte la descripción de la imagen aquí
El efecto después de extraer por línea es el siguiente:
Inserte la descripción de la imagen aquí
Cada archivo txt tiene un contenido similar al siguiente:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41782149/article/details/104593812
Recomendado
Clasificación