Dev - C++ - ejercicio en c - guardar en un fichero una frase n veces

 
Vista:

ejercicio en c - guardar en un fichero una frase n veces

Publicado por hola (1 intervención) el 22/01/2020 21:06:22
Escribe un programa que pida por pantalla escribir una frase con números, para ello usa un string (cadena de caracteres o vector de caracteres) de 100 caracteres.
Crea un fichero llamado “salida.txt” que contenga la frase N veces.
Una vez creado el fichero, muestra su contenido en pantalla y cuenta los dígitos numéricos que hay en el fichero.
el ejercicio es este y tengo esto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdlib.h>
main() {
  FILE *salida;
  char frase[100], total[100];
  float num;
  int i=0, j=0, cont=0;
  salida = fopen("salida.txt","w");
    if(salida == NULL) {
    printf("Error al abrir el archivo");
  }
  else{
  printf("Frase con números:");
  gets(frase);
  puts(frase);
  printf("\nVeces a repetir:");
  scanf("%f", &num);
  if(num<1){ printf("Veces a repetir:");
  scanf("%d", &num);}
  else{
  for(j=0;j<=num;j++){
    fputs(frase, salida);
    j++;
}
fclose(salida);}
 
salida = fopen("salida.txt","r");
    if(salida == NULL) {
    printf("Error al abrir el archivo");
  }
  else{
for(i=0;i<100;i++)  {
fgets(total, 100, salida);
if(total[i]=='0'||total[i]=='1'||total[i]=='2'||total[i]=='3'||total[i]=='4'||total[i]=='5'||total[i]=='6'||total[i]=='7'||total[i]=='8'||total[i]=='9'){
 cont++; }
 i++;
};
printf("EL fichero contiene: %s", total);
printf("\nNumeros= %d", cont);}
fclose(salida);
}
fclose(salida);
  system("pause");
 return(0); }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

ejercicio en c - guardar en un fichero una frase n veces

Publicado por Thanatos (199 intervenciones) el 23/01/2020 02:06:23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>   // FILE, printf(), scanf(), fgets(), fprintf(),fopen(), fclose()
#include <stdlib.h>  // EXIT_SUCCESS, EXIT_FAILURE
#include <string.h>  // strcspn(), memset()
#include <ctype.h>   // isdigit()
 
enum { MAX = 100 };
 
int main(void) {
    const char *rutaArchivo = "salida.txt";
    char frase[MAX] = { '\0' };
    FILE *archivo = NULL;
    int nDigitos = 0;
    int nFrases = 0;
 
    // Lee los datos de entrada.
    printf("Frase con numeros: ");
    (void) fgets(frase, MAX, stdin);
 
    while (nFrases < 1) {
        printf("Veces a repetir:   ");
        scanf("%i", &nFrases);
    }
 
    // Escribe las frases en el archivo.
    if ((archivo = fopen(rutaArchivo, "w")) == NULL) {
        fprintf(stderr, "\n* Error al abrir el archivo *\n\n");
        return EXIT_FAILURE;
    }
 
    for (int cont = 0; cont < nFrases; ++cont) {
        fputs(frase, archivo);
    }
 
    fclose(archivo);
    archivo = NULL;
 
    printf("\n");
 
    // Lee el archivo, muestra su contenido y cuenta los dígitos.
    if ((archivo = fopen(rutaArchivo, "r")) == NULL) {
        fprintf(stderr, "\n* Error al abrir el archivo *\n\n");
        return EXIT_FAILURE;
    }
 
    for ( ; ; ) {
        memset(frase, '\0', sizeof frase);
 
        if (fgets(frase, MAX, archivo)) {
            printf("%s", frase);
 
            for (int i = 0; i < MAX && frase[i] != '\n'; ++i) {
                if (isdigit(frase[i])) {
                    ++nDigitos;
                }
            }
        } else {
            break;
        }
    }
 
    printf("\nTotal de digitos: %i\n", nDigitos);
 
    fclose(archivo);
    archivo = NULL;
 
    return EXIT_SUCCESS;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar