Ordenar strings del archivo de texto

Dado un archivo de texto “file.txt” que consta de strings, la tarea es ordenar todas las strings en orden alfabético en ese archivo de texto.

Enfoque: La idea es usar el concepto de manejo de archivos y un archivo de texto (por ejemplo, archivo.txt ) que contenga todas las strings. A continuación se muestran los pasos:

  • Cree el archivo usando fopen() e inserte nombres en el archivo usando fprintf() .
  • Cierra el archivo usando fclose() .
  • Vuelva a abrir el archivo para leer los nombres.
  • Lea o escanee los nombres del archivo usando fscanf() y guárdelo en un vector de strings .
  • Ordene la string dada almacenada en el vector usando la función sort() .
  • Ahora, inserte la string ordenada en ese archivo e imprímala.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program to sort given array
// of string stored in a file
#include <bits/stdc++.h>
#include <cstdlib>
#include <cstring>
#include <fstream>
using namespace std;
  
// Driver Code
int main()
{
    int N, i, j;
  
    // File pointer to open file
    FILE* f;
  
    // fopen() for creating of a file
    f = fopen("file.txt", "w");
  
    // Input number of strings
    // to be inserted in file
    cin >> n;
  
    vector<int> name(N);
  
    // Insert the strings into file
    for (i = 0; i < n; i++) {
  
        // Insert names in file
        cin >> name[i];
  
        // Writing into the file
        fprintf(f, "%s", name[i]);
    }
  
    // Close the file
    fclose(f);
  
    // Reopening in read mode
    f = fopen("file.txt", "r");
  
    // Check does file exist or not
    if (f == NULL) {
        cout << "File doesn't exist!";
        return 0;
    }
  
    // Read the file until it
    // encounters end of line
    while (!feof(f)) {
        fscanf(f, "%s", name[i]);
        i++;
    }
    n = i - 1;
  
    // Sort the strings
    sort(name.begin(), name.end());
  
    // Insert the strings into file
    // after sorting
    for (i = 0; i < n; i++) {
  
        // Write into the file
        fprintf(f, "%s", name[i]);
    }
  
    // Print the sorted names
    for (i = 0; i < n; i++) {
        cout << name[i] << '\n';
    }
  
    return 0;
}

Fichero de entrada:

Archivo de salida:

Publicación traducida automáticamente

Artículo escrito por purnimasharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *