Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Søra en 13 Diciembre 2010, 17:38 pm



Título: Error en codigo C
Publicado por: Søra en 13 Diciembre 2010, 17:38 pm
Código
  1. #include <stdio.h>
  2. main() {
  3. printf("¿Número de carácteres?\n");
  4. int num;
  5. scanf("%i\n",&num);
  6. char vector[num];
  7. int c;
  8. FILE *comprob;
  9. comprob = fopen("archivo.txt","rb");
  10. if (comprob==NULL) {
  11. printf("No existe el archivo\n"); }
  12. else {
  13. int i;
  14. for (i=0; i<num; i++) {
  15.          c = fgetc(comprob);
  16.          vector[i]=c;}
  17.  
  18. vector[i] = '\0';
  19. fclose(comprob);
  20. int a;
  21. for (a=0; a<num; a++) {
  22.          printf("%c",vector[a]);} }
  23. exit 0;}

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


Título: Re: Error en codigo C
Publicado por: Shell Root en 13 Diciembre 2010, 18:37 pm
Intentadlo así,
Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.    int num;
  5.    char vector[num];
  6.    int c;
  7.    FILE *comprob;
  8.  
  9.    printf("Número de carácteres?\n");
  10.    scanf("%i",&num);
  11.    comprob = fopen("C:\PoC.txt", "rb");
  12.    if (comprob==NULL){
  13.       printf("No existe el archivo\n");
  14.    }else{
  15.          int i;
  16.          for (i=0; i<num; i++) {
  17.              c = fgetc(comprob);
  18.            vector[i] = c;
  19.          }
  20.          vector[i] = '\0';
  21.          fclose(comprob);
  22.          for (i=0; i<num; i++){
  23.              printf("%c\n", vector[i]);
  24.          }
  25.    }
  26.    system("PAUSE");
  27.    return 0;
  28. }

Resultado,
Código
  1. N·mero de carßcteres?
  2. 28
  3. Hola como estas - SHELL ROOT


Título: Re: Error en codigo C
Publicado por: Søra en 13 Diciembre 2010, 18:56 pm
me da fallo de segmentacion :O


Título: Re: Error en codigo C
Publicado por: Shell Root en 13 Diciembre 2010, 19:37 pm
No se, estoy usando Dev-C++, entonces en la siguiente linea de tú código,
Código
  1. #include <stdio.h>
  2. main() {
  3. printf("¿Número de carácteres?\n");
  4. int num;
  5. scanf("%i\n",&num);
  6. char vector[num];
  7. int c;
  8. FILE *comprob;
  9. comprob = fopen("archivo.txt","rb");
  10. if (comprob==NULL) {
  11. printf("No existe el archivo\n"); }
  12. else {
  13. int i;
  14. for (i=0; i<num; i++) {
  15.          c = fgetc(comprob);
  16.          vector[i]=c;}
  17.  
  18. vector[i] = '\0';
  19. fclose(comprob);
  20. int a;
  21. for (a=0; a<num; a++) {
  22.          printf("%c",vector[a]);} }
  23. exit 0;}

Quitale el \n al scanf así,
Código
  1. scanf("%i", &num);


Título: Re: Error en codigo C
Publicado por: Garfield07 en 13 Diciembre 2010, 19:46 pm
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv [])
  4. {
  5. if (argc != 3)
  6. {
  7. printf ("Use: %s <file> <chars>\n\n", argv [0]);
  8. return 1;
  9. }
  10.  
  11. int i, c;
  12. char frase [atoi (argv [2])];
  13.  
  14. FILE *fp = fopen(argv [1],"r");
  15. if (fp == NULL)
  16. {
  17. printf("No existe el archivo\n");
  18. return 1;
  19. }
  20. for (i = 1; i <= atoi (argv [2]); i++)
  21. {
  22. c = fgetc(fp);
  23. frase[i] = c;
  24. }
  25. fclose (fp);
  26.  
  27. for (i = 1; i <= atoi(argv [2]); i++)
  28. printf("%c", frase[i]);
  29.  
  30. return 0;
  31. }
  32.  

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


Título: Re: Error en codigo C
Publicado por: Søra en 13 Diciembre 2010, 20:00 pm
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:

Código
  1. #include <stdio.h>
  2. main() {
  3. printf("¿Número de carácteres?\n");
  4. int num;
  5. scanf("%i",&num);
  6. char vector[num];
  7. int c;
  8. FILE *comprob;
  9. comprob = fopen("archivo.txt","rb");
  10. if (comprob==NULL) {
  11. printf("No existe el archivo\n"); }
  12. else {
  13. int i;
  14. for (i=0; i<num; i++) {
  15.          c = fgetc(comprob);
  16.          vector[i]=c;}
  17.  
  18. vector[i] = '\0';
  19. fclose(comprob);
  20. int a;
  21. for (a=0; a<num; a++) {
  22.          printf("%c",vector[a]);} }
  23. return 0;}



Título: Re: Error en codigo C
Publicado por: Garfield07 en 13 Diciembre 2010, 20:12 pm
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


Título: Re: Error en codigo C
Publicado por: Shell Root en 14 Diciembre 2010, 03:35 am
@Sagrini, no entiendo para qué mandarle un salto de linea cuando estas extrayendo un valor...


Título: Re: Error en codigo C
Publicado por: Garfield07 en 14 Diciembre 2010, 18:30 pm
Esto es exactamente lo que pregunto, xD!