C/Visual C - Lectura de archivos sucesivos C++

 
Vista:
sin imagen de perfil

Lectura de archivos sucesivos C++

Publicado por Danilo (10 intervenciones) el 09/01/2017 01:19:59
Estimados

tengo la siguiente duda que no consigo resolverla

Busco hacer lectura de imagenes jpg cuyo nombres son sucesivos (imagen1.jpg, imagen2.jpg, etc) pero mi problema es que no consigo que genere la ruta y el nombrre del archivo con un ciclo

ejemplo

1
2
3
4
5
6
7
char *direccion;
for (i = 1; i <= 1947; i++)
{
	direccion = "C:\\Users\\Martinez\\Desktop\\\\archivos\\imagen%d.jpg", i;
	res = binario(direccion, i);
	printf("imagen%d.jpg completado...\n", i);
}

pero no me resulta.

se que me estoy equivocando en algo

favor su sabiduria

saludos
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: 479
Plata
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Lectura de archivos sucesivos C++

Publicado por agustin (271 intervenciones) el 09/01/2017 01:44:27
Prueba asi:
1
2
3
4
5
6
7
char direccion[1024];
for (i = 1; i <= 1947; i++)
{
	sprintf (direccion, "C:\\Users\\Martinez\\Desktop\\archivos\\imagen%d.jpg", i);
	res = binario(direccion, i);
	printf("imagen%d.jpg completado...\n", i);
}
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
sin imagen de perfil

Lectura de archivos sucesivos C++

Publicado por Danilo (10 intervenciones) el 09/01/2017 03:16:11
Gracias por tu respuesta

hice lo que indicastes pero ahora me arroja este error

rljct2

sera por esto?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char direccion[1024];
for (i = 1; i <= 1947; i++)
 
{
 
	sprintf (direccion, "C:\\Users\\Martinez\\Desktop\\archivos\\imagen%d.jpg", i);
 
	res = binario(direccion, i);
 
	printf("imagen%d.jpg completado...\n", i);
 
}
....
int binario(char *nombre, int n)
{
	FILE *entrada, *salida;
.....

no sera porque intento enviar a la funcion una cadena de caracteres a un puntero char?
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
sin imagen de perfil
Val: 479
Plata
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Lectura de archivos sucesivos C++

Publicado por agustin (271 intervenciones) el 09/01/2017 09:57:07
No es por eso, ciertamente en tu caso un char* y un char [] no va a suponer ninguna diferencia. Lo que si yo haría que el parámetro de esa función fuese const char [] pada asegurar que no se podrá modificar la cadena dentro de la función ya que si ocurriese te avisaría o bien al compilar o con una excepción en ejecución. Si pones todo el codigo podremos ayudarte porque lo que pones no es el problema. Si te fijas te dice que el error es en la línea 31 y que es en la expresión stream != nullptr.
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
sin imagen de perfil

Lectura de archivos sucesivos C++

Publicado por Danilo (10 intervenciones) el 10/01/2017 01:59:39
ese error me sucede con el fprintf, este codigo pero con imagenes ppm es igual que el anterior y me aroja el mismo error

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
69
70
71
72
73
74
75
76
77
78
79
#define _CRT_SECURE_NO_WARNINGS
 
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include <iostream>
#include <fstream>
 
using namespace std;
 
int binario(char *nombre, int n);
char *getArchivoSalida(int num);
 
int main()
{
	int res, i;
	char direccion[1024] = "";
	for (i = 1; i <= 1947; i++)
	{
		sprintf(direccion, "C:\\Users\\Martinez\\Desktop\\ffmpeg-3.2-win32-shared\\bin\\archivos\\imagen%d.ppm", i);
		res = binario(direccion, i); /*ME INDICA EL ERROR AHI*/
		printf("imagen%d.p3.ppm completado...\n", i);
	}
	if (res > 0)
	{
		printf("Proceso finalizo exitosamente \n");
	}
	else
	{
		printf("HUBO UN ERROR \n");
	}
	system("pause");
	return 0;
}
 
char *getArchivoSalida(int num)
{
	char nombre[1024] = "";
	sprintf(nombre, "Frame%d.ppm", num);
	ofstream fs(nombre);
	fs.close();
	return nombre;
}
 
int binario(char *nombre, int n)
{
	FILE *entrada, *salida;
	unsigned char red, green, blue;
	char *archivoSalida;
	char formato[3];
	int height, width, depth;
	int i, j, widthCont = 1;
	entrada = fopen(nombre, "rb");
	if (entrada == NULL)
	{
		printf("NO SE PUDO ABRIR\n");
		system("pause");
		return -1;
	}
	archivoSalida = getArchivoSalida(n);
	printf(archivoSalida);
	salida = fopen(archivoSalida, "w+");
	fscanf(entrada, "%s", formato);
	if (strcmp(formato, "P6") != 0)
	{
		printf("FORMATO INCORRECTO \n");
		return -1;
	}
	fscanf(entrada, "\n%d %d\n%d\n", &width, &height, &depth);
	fprintf(salida, "P3\n"); /*ME INDICA EL ERROR AHI*/
	fprintf(salida, "%d %d\n%d\n", width, height, depth);;
	while(!feof(entrada))
	{
		/****************************/
	}
	fclose(entrada);
	fclose(salida);
	return 1;
}

lo chistoso es que aveces anda sin problemas pero otras veces arroja el error que publique arriba :(
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
sin imagen de perfil

Lectura de archivos sucesivos C++

Publicado por Danilo (10 intervenciones) el 10/01/2017 04:26:13
Agrego un suceso extraño, ese error solo me pasa usando visual C++ peo estuve usando codeblocks para compilarlo esta vez (gcc) y no me genera ningun error, anda bien

sera cosa del vc++?
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
sin imagen de perfil
Val: 479
Plata
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Lectura de archivos sucesivos C++

Publicado por agustin (271 intervenciones) el 10/01/2017 18:00:54
Tu código es un poco cajón desastre. Varias cosillas.
-En c++ existe la clase string que facilita mucho el trabajo así que no entiendo porque no la usas en lugar de usar un array de caracteres.
-Si ya tienes agregadala fstream ¿porque no lo usas para trabajar con los archivos?
fprintf(salida, "P3\n"); /*ME INDICA EL ERROR AHI*/
Normal, intentas copiar una cadena con formato a la dirección apuntada por una variable de tipo FILE. No se ni como no te lanza algún warning.
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