Crear archivos a partir de nombres de un txt
Publicado por carlos (95 intervenciones) el 21/06/2021 12:38:31
Buenas tardes, me gustaria plantear porque tengo un problema que le doy vueltas que no soluciono
El tema es el siguiente, queria hacer que he creado un indice a partir de un txt creado con cmd que me dice todos los archivos que hay en una carpeta luego programar algo que pasara de ese archivo .txt y cada nombre creara otro .txt correspondiente, el problema es que no lo crea y los nombres estan correctos.No se si añade algun caracter que desconzco o tal pero no me lo quiere crear como si no existiera el directorio
en cambio lo pruebo con el char de seguridad que puse y funciona
Ya di con la solucion usando strncpy en vez strcpy, no entiendo porque mi cabeza me da la solución cuando planteo la pregunta pero la cosa es que se salta nombres
El tema es el siguiente, queria hacer que he creado un indice a partir de un txt creado con cmd que me dice todos los archivos que hay en una carpeta luego programar algo que pasara de ese archivo .txt y cada nombre creara otro .txt correspondiente, el problema es que no lo crea y los nombres estan correctos.No se si añade algun caracter que desconzco o tal pero no me lo quiere crear como si no existiera el directorio
en cambio lo pruebo con el char de seguridad que puse y funciona
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
68
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
//LEER DE lista.txt coger de alli el nombre y crear un archivo en otro lado con ese nombre y dato
char numero[2];
int opcion;
printf("Eliga la opción que desea\n");
printf("1ºCrear archivos\n");
printf("2ºTraspasar archivos a .bin\n");
fgets(numero,2,stdin);
sscanf(numero,"%d",&opcion);
switch(opcion){
case 1:{
/////////////// 1º OPCION /////////////////////
char nombre[12];
char directorio[24];
char nombreedit[12];
char seguridad[100]="ordenacion\\algo.txt";
printf("ACTIVADA OPCION 1");
FILE* indice;
//FILE* archivo;
FILE* destino;
indice=fopen("lista.txt","rt");
do{
fread(&nombre,sizeof(nombre),1,indice);
for(int x=0;x<12;x++){
if(nombre[x]=='\n'){
nombre[x]=nombre[x+1];
}
}
////////quita el punto aparte del final
nombre[12]='\n';
strcpy(nombreedit,nombre); ////copia el nombre
nombreedit[11]='t';
nombreedit[10]='x';
nombreedit[9]='t';
///lo cambia a .txt
strcpy(directorio,"ordenacion\\");
strcat(directorio,nombreedit);
printf("%s\n",directorio);
printf("%s\n",nombre);
//archivo=fopen(nombre,"rb");
destino=fopen(directorio,"w+");
fwrite(&nombre,sizeof(nombre),1,destino);
fclose(destino);
}while(!feof(indice));
}
}
}
Ya di con la solucion usando strncpy en vez strcpy, no entiendo porque mi cabeza me da la solución cuando planteo la pregunta pero la cosa es que se salta nombres
Valora esta pregunta
0