Error en codigo C

Iniciado por Søra, 13 Diciembre 2010, 17:38 PM

0 Miembros y 1 Visitante están viendo este tema.

Søra

#include <stdio.h>
main() {
printf("¿Número de carácteres?\n");
int num;
scanf("%i\n",&num);
char vector[num];
int c;
FILE *comprob;
comprob = fopen("archivo.txt","rb");
if (comprob==NULL) {
printf("No existe el archivo\n"); }
else {
int i;
for (i=0; i<num; i++) {
          c = fgetc(comprob);
          vector[i]=c;}

vector[i] = '\0';
fclose(comprob);
int a;
for (a=0; a<num; a++) {
          printf("%c",vector[a]);} }
exit 0;}


No da errores al compilar pero no muestra lo que contiene el archivo ¿ Por que ?





Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.

Shell Root

Intentadlo así,
#include <stdio.h>

int main(){
    int num;
    char vector[num];
    int c;
    FILE *comprob;
   
    printf("Número de carácteres?\n");
    scanf("%i",&num);
    comprob = fopen("C:\PoC.txt", "rb");
    if (comprob==NULL){
       printf("No existe el archivo\n");
    }else{
          int i;
          for (i=0; i<num; i++) {
              c = fgetc(comprob);
            vector[i] = c;
          }
          vector[i] = '\0';
          fclose(comprob);
          for (i=0; i<num; i++){
              printf("%c\n", vector[i]);
          }
    }
    system("PAUSE");
    return 0;
}


Resultado,
Código (PoC) [Seleccionar]
N·mero de carßcteres?
28
Hola como estas - SHELL ROOT
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Søra

me da fallo de segmentacion :O





Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.

Shell Root

No se, estoy usando Dev-C++, entonces en la siguiente linea de tú código,
Código (c,5) [Seleccionar]
#include <stdio.h>
main() {
printf("¿Número de carácteres?\n");
int num;
scanf("%i\n",&num);
char vector[num];
int c;
FILE *comprob;
comprob = fopen("archivo.txt","rb");
if (comprob==NULL) {
printf("No existe el archivo\n"); }
else {
int i;
for (i=0; i<num; i++) {
          c = fgetc(comprob);
          vector[i]=c;}

vector[i] = '\0';
fclose(comprob);
int a;
for (a=0; a<num; a++) {
          printf("%c",vector[a]);} }
exit 0;}


Quitale el \n al scanf así,
scanf("%i", &num);
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Garfield07

#include <stdio.h>

int main(int argc, char *argv [])
{
if (argc != 3)
{
printf ("Use: %s <file> <chars>\n\n", argv [0]);
return 1;
}

int i, c;
char frase [atoi (argv [2])];

FILE *fp = fopen(argv [1],"r");
if (fp == NULL)
{
printf("No existe el archivo\n");
return 1;
}
for (i = 1; i <= atoi (argv [2]); i++)
{
c = fgetc(fp);
frase[i] = c;
}
fclose (fp);

for (i = 1; i <= atoi(argv [2]); i++)
printf("%c", frase[i]);

return 0;
}


Vaya, algunos fallos habia...
tmb ay aqui de omision en este, pero el tiempo...

fff sora se te da mejor la seguridad, de lo poco que se de ti...

PD: No tiene nada que ver. %i es igual que %d en Dev, pero es siempre mejor %d


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Søra

Como tu decias shell root me fallaba el \n en el scanf graciass.
Si jaaja puede que se mediera algo mejor la seguridad pero aun asi me gusta programar xDD
ademas en temas de seguridad no consigo avanzar :( bueno dejo el code resuelto porsi a alguien le sirve:

#include <stdio.h>
main() {
printf("¿Número de carácteres?\n");
int num;
scanf("%i",&num);
char vector[num];
int c;
FILE *comprob;
comprob = fopen("archivo.txt","rb");
if (comprob==NULL) {
printf("No existe el archivo\n"); }
else {
int i;
for (i=0; i<num; i++) {
          c = fgetc(comprob);
          vector[i]=c;}

vector[i] = '\0';
fclose(comprob);
int a;
for (a=0; a<num; a++) {
          printf("%c",vector[a]);} }
return 0;}







Se busca sabio para intercambio:
Todo lo que se por la mitad de lo que desconozco.

Garfield07

De nada por nada. El mio tmb estaba bien.
Por que el de Sora estaba mal? Quiero decir, eso a mi nunca me ha problematizado


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Shell Root

@Sagrini, no entiendo para qué mandarle un salto de linea cuando estas extrayendo un valor...
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Garfield07

Esto es exactamente lo que pregunto, xD!


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo