Arreglo en C detectado como virus¿¿??

Iniciado por Karoleck, 24 Enero 2014, 22:12 PM

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

Karoleck

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.

_Enko

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)

amchacon

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 (cpp) [Seleccionar]
scanf("%d",&num);

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

Puesto que tu idea será rellenar casilla a casilla no?
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

dato000

yo me pregunto que significan estas dos sentencias:

 
long sum= 0L;
float prom= 0.0f;



amchacon

Código (cpp) [Seleccionar]
0L

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

Código (cpp) [Seleccionar]
0.0f

La constante se interpretará como un float.

Ambas son innecesarias en este caso.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

Karoleck

Cita de: _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)


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

Karoleck

Cita de: 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 (cpp) [Seleccionar]
scanf("%d",&num);

Debería ser:
Código (cpp) [Seleccionar]
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:


vangodp

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;
int main (){

    int n = 0;
    cout << "introducir limite para contador: " << endl;
    cin >> n ;
    int arreglo[n];

    for ( int contador = 0; contador < n ; contador++ ){
        arreglo [contador] = contador;
        cout <<"arreglo[" << contador << "] = " << contador << endl;
    }
return 0;
}

:¬¬

leosansan

#8
Cita de: 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 (cpp) [Seleccionar]
scanf("%d",&num);

Debería ser:
Código (cpp) [Seleccionar]
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 (cpp) [Seleccionar]

# 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[i]);  /*<==AQUI esta puesto el [i] */
              }
         getch();
           
     }


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! ..... !!!!






amchacon

Cita de: leosansan en 25 Enero 2014, 10:29 AM
Pues no, no es eso.

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


Código (cpp) [Seleccionar]

# 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[i]);  /*<==AQUI esta puesto el [i] */
              }
         getch();
           
     }


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! ..... !!!!



Vaya, que observador eres Leo ^^
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar