Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Karoleck en 24 Enero 2014, 22:12 pm



Título: Arreglo en C detectado como virus¿¿??
Publicado por: Karoleck en 24 Enero 2014, 22:12 pm
Hola chic@s:

Estoy aprendiendo a utilizar arreglos, estoy haciendo el programa de un libro y después de compilarlo mi antivrus lo borra porque dice que:

variant.graftor.74525


El código es este

# include <stdio.h>
# include <conio.h>
# include <math.h>
#include <stdlib.h>


main()


{
       int num [4];
       int con= 4;
       int i;
       long sum= 0L;
       float prom= 0.0f;
       
       printf("\n\tComo 4 numeros:\n")  ;
           for (i=0; i< con; i++)
           {
             printf("%2d>",i+1);
             scanf("%d",&num); 
               }
          getch();
           
      }

Espero me ayuden a decirme que está mal y por que lo detecta así

P.D.
El programa lo estoy haciendo por partes para entender mejor su funcionamiento, entonces solo esta parte en lo que tengo.


Título: Re: Arreglo en C detectado como virus¿¿??
Publicado por: _Enko en 24 Enero 2014, 22:31 pm
Debe ser falso positivo. Estas usando un compilador viejo de Borland. Turbo Cpp?

Aparentemente a tu antivirus no les gustan aplicaciones de 16bit.

Puedes desactivarlo temporalmente o agregar el directorio donde crea la ejecutable como excepcion.
O mejor aun, trata de usar un compilador menos cavernicola. (xD)


Título: Re: Arreglo en C detectado como virus¿¿??
Publicado por: amchacon en 24 Enero 2014, 22:32 pm
Hay un mal uso de punteros ahí, estás escribiendo en una zona de la memoria que no deberías, ahora tanto como ser un virus... Por eso no uso antivirus, detecta un montón de amenazas falsas y deja pasar las de verdad. Lo mejor es usar el sentido común.

En fin, el problema es esto:
Código
  1. scanf("%d",&num);

Debería ser:
Código
  1. scanf("%d",&num[i]);

Puesto que tu idea será rellenar casilla a casilla no?


Título: Re: Arreglo en C detectado como virus¿¿??
Publicado por: dato000 en 25 Enero 2014, 00:34 am
yo me pregunto que significan estas dos sentencias:

Código
  1.  
  2. long sum= 0L;
  3. float prom= 0.0f;
  4.  


Título: Re: Arreglo en C detectado como virus¿¿??
Publicado por: amchacon en 25 Enero 2014, 00:55 am
Código
  1. 0L

Significa que esa constante se interpretará como un long (la constante es 0).

Código
  1. 0.0f

La constante se interpretará como un float.

Ambas son innecesarias en este caso.


Título: Re: Arreglo en C detectado como virus¿¿??
Publicado por: Karoleck en 25 Enero 2014, 03:23 am
Debe ser falso positivo. Estas usando un compilador viejo de Borland. Turbo Cpp?

Aparentemente a tu antivirus no les gustan aplicaciones de 16bit.

Puedes desactivarlo temporalmente o agregar el directorio donde crea la ejecutable como excepcion.
O mejor aun, trata de usar un compilador menos cavernicola. (xD)


Hola, antes que nada gracias a todos por sus respuestas, ya estaba dudando de seguir aprendiendo a programar jejeje.

Respecto a lo del compilador, estoy usando Dev-C++, la ultima versión y ya he compilado exitosamente algunos programas sencillos pero este fue el único que se detecto como malware


Título: Re: Arreglo en C detectado como virus¿¿??
Publicado por: Karoleck en 25 Enero 2014, 03:28 am
Hay un mal uso de punteros ahí, estás escribiendo en una zona de la memoria que no deberías, ahora tanto como ser un virus... Por eso no uso antivirus, detecta un montón de amenazas falsas y deja pasar las de verdad. Lo mejor es usar el sentido común.

En fin, el problema es esto:
Código
  1. scanf("%d",&num);

Debería ser:
Código
  1. scanf("%d",&num[i]);

Puesto que tu idea será rellenar casilla a casilla no?


Muchas gracias por tu ayuda, si de hecho eso me faltaba.
Y sí, quiero rellenar casilla por casilla, pero quiero que mi programa lo rellene con un contador, algo así:

arreglo [1]   1
arreglo [2]   2
arreglo [3]   3
arreglo [4]   4
arreglo [5]   5
.
.
.
.
Alguna idea?? :huh:



Título: Re: Arreglo en C detectado como virus¿¿??
Publicado por: vangodp en 25 Enero 2014, 09:16 am
Código
  1. #include <iostream>
  2. using namespace std;
  3. int main (){
  4.  
  5.    int n = 0;
  6.    cout << "introducir limite para contador: " << endl;
  7.    cin >> n ;
  8.    int arreglo[n];
  9.  
  10.    for ( int contador = 0; contador < n ; contador++ ){
  11.        arreglo [contador] = contador;
  12.        cout <<"arreglo[" << contador << "] = " << contador << endl;
  13.    }
  14. return 0;
  15. }
  16.  
:¬¬


Título: Re: Arreglo en C detectado como virus¿¿??
Publicado por: leosansan en 25 Enero 2014, 10:29 am
Hay un mal uso de punteros ahí, estás escribiendo en una zona de la memoria que no deberías, ahora tanto como ser un virus... Por eso no uso antivirus, detecta un montón de amenazas falsas y deja pasar las de verdad. Lo mejor es usar el sentido común.

En fin, el problema es esto:
Código
  1. scanf("%d",&num);

Debería ser:
Código
  1. scanf("%d",&num[i]);

Puesto que tu idea será rellenar casilla a casilla no?

Pues no, no es eso.

En realidad lo tiene puesto. Mira su código con etiquetas Code:


Código
  1. # include <stdio.h>
  2. # include <conio.h>
  3. # include <math.h>
  4. #include <stdlib.h>
  5.  
  6.  
  7. main()
  8.  
  9.  
  10. {
  11.       int num [4];
  12.       int con= 4;
  13.       int i;
  14.       long sum= 0L;
  15.       float prom= 0.0f;
  16.  
  17.       printf("\n\tComo 4 numeros:\n")  ;
  18.           for (i=0; i< con; i++)
  19.           {
  20.             printf("%2d>",i+1);
  21.             scanf("%d",&num[i]);  /*<==AQUI esta puesto el [i] */
  22.               }
  23.          getch();
  24.  
  25.      }
  26.  

Es el problema de no usar las benditas etiquetas Code ya que al encontrarse con [ i], sin el espacio en blanco que he dejado aposta, interpreta el [ i] como la etiqueta de las letras en cursiva. Por eso a partir de ahí las letras del post salen en cursiva.

Por cierto, el código anterior lo he copiado del original del post dándole a citar y copiándolo de ahí.


¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)





Título: Re: Arreglo en C detectado como virus¿¿??
Publicado por: amchacon en 25 Enero 2014, 11:19 am
Pues no, no es eso.

En realidad lo tiene puesto. Mira su código con etiquetas Code:


Código
  1. # include <stdio.h>
  2. # include <conio.h>
  3. # include <math.h>
  4. #include <stdlib.h>
  5.  
  6.  
  7. main()
  8.  
  9.  
  10. {
  11.       int num [4];
  12.       int con= 4;
  13.       int i;
  14.       long sum= 0L;
  15.       float prom= 0.0f;
  16.  
  17.       printf("\n\tComo 4 numeros:\n")  ;
  18.           for (i=0; i< con; i++)
  19.           {
  20.             printf("%2d>",i+1);
  21.             scanf("%d",&num[i]);  /*<==AQUI esta puesto el [i] */
  22.               }
  23.          getch();
  24.  
  25.      }
  26.  

Es el problema de no usar las benditas etiquetas Code ya que al encontrarse con [ i], sin el espacio en blanco que he dejado aposta, interpreta el [ i] como la etiqueta de las letras en cursiva. Por eso a partir de ahí las letras del post salen en cursiva.

Por cierto, el código anterior lo he copiado del original del post dándole a citar y copiándolo de ahí.


¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)

Vaya, que observador eres Leo ^^