No deberías escribir en argv, es para pasarle información al programa.
Cuando uses strcat, strcpy y toda esta lista de instrucciones asegúrate de que el destino tiene el tamaño suficiente como para alojar la cadena de origen.
Para tu caso lo mejor sería crear un búffer que pudiera alojar toda la cadena, algo así como
Cuando uses strcat, strcpy y toda esta lista de instrucciones asegúrate de que el destino tiene el tamaño suficiente como para alojar la cadena de origen.
Para tu caso lo mejor sería crear un búffer que pudiera alojar toda la cadena, algo así como
Código:
char buffer[255] = {0};
for (int i=1; i<argc; ++i)
strcat(buffer, argv[i]);Como medida de seguridad adicional debería aparte no crear un buffer tan extenso que potencialmente podría ser usado para un ataque de ejecución por overflow:
Código
int main(int argc,char*argv[]) { unsigned int uiTotalBufferSize=0; char*lpBuffer; register unsigned int i; for(i=1;i<argc;i++) if(!lpBuffer) return 1; lpBuffer[0]=0; for(i=1;i<argc;i++) HacerCalculo(lpBuffer); return 0; }






