Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Conflitto di variabili

  1. #1
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841

    [c/c++] conflitto variabili

    qui ci sono due funzioni: mi chiedevo se le variabili contenute in ogniuna di esse corressero il rischio di entrare in conflitto oppure no...
    e volevo anche sapere se le variabili dentro una di queste funzioni rischiassero di entrare in conflitto con quelle del main... grazie
    codice:
    //********* INIZIO comando dir *********//
    char *showdir(char s[2000])
    {
      char ret[2000];
      strcpy(ret,s);
      int x;
      for(x=4;x < strlen(s);x++) {
          ret[(x-4)] = s [x];
      }
      ret[(x-4)] = '\0';
    
    char files[20000];
      files[0] = '\0';
      
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind = INVALID_HANDLE_VALUE;
    char DirSpec[MAX_PATH + 1];  // directory specification
    DWORD dwError;
        
    char directory[120] = "C:\\";
    
    strncpy (DirSpec, ret, strlen(ret)+1); //ret al posto di directory
    strncat (DirSpec, "\\*", 3);
                          
    printf("\ndirectory dello scan: %s\n",DirSpec);
                          
    hFind = FindFirstFile( DirSpec, &FindFileData); 
    while (FindNextFile(hFind, &FindFileData) != 0) 
    {
          strcat(files,"\n");      
          strcat(files,FindFileData.cFileName);
        //printf("%s\n", FindFileData.cFileName);
    }
    
        return(files);
    }
    //********* FINE comando dir *********//
    
    //********* INIZIO comando ren *********//
    char *rinomina(char ss[2000])
    {
      char s[2000] = "ren \"prova.txt\" \"prova2.txt\"";     
      char ret[2000];
      char ret2[2000];
      char ret3[2000];
       strcpy(ret,s);
       
       printf("%s",s);
       
       int x,y,xx,xx2, cont=0,cont2=0;
       for(x=0;x < strlen(s);x++) { 
                 if (ret[x] == '"') { y=y+1; }
                 if (y == 1 & cont == 0) { 
                      cont = 1;
                      xx2 = 0;
                      for(xx = x+1 ; ; xx++){ 
                           ret2[xx2] = s[xx]; 
                           xx2 = xx2 + 1;
                           if (ret[xx] == '"') { ret2[(xx2-1)]= '\0'; break; }
                      }
                 }
                 if (y==3 & cont2 == 0) {  cont2 = 1;
    
                     xx2 = 0;
                     for(xx = x+1 ; ; xx++){ 
                            ret3[xx2] = s[xx]; 
                            xx2 = xx2 + 1;
                            if (ret[xx] == '"') { ret3[(xx2-1)]= '\0'; break; }
                     }
                 }           
       } 
       printf("RINOMINAZIONE FILE: DA: %s A: %s\n",ret2,ret3);
       int control = rename(ret2,ret3); char resp[2000];
       if (control != 0) { strcpy(resp,"rinominazione non corretta"); } else  { strcpy(resp,"rinominazione OK"); }
       return(resp);
    }
    //********* FINE comando ren *********//

  2. #2
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Scusa se mi permetto un commento... per il listato che hai postato non si puo' certo parlare di programmazione elegante e leggibile... le variabili andrebbero dichiarate all'inizio delle funzioni o del blocco e non un po' ovunque nel codice.

    Per quanto riguarda la tua domanda: variabili definite in un blocco/funzione sono visibili solo in quel blocco/funzione. Se altrove esiste una variabile con lo stesso nome questa sarà a tutti gli effetti un'altra cosa.
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  3. #3
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    nn ti piace come programmo????
    in effetto programmo in modo molto intuitivo e casual... consigli???

  4. #4
    Ci sarebbero una marea di cose da sistemare.
    Variabili, codice e tanto altro.

    Per esempio la cosa che hai fatto qui è pessima:
    codice:
    for (x=4;x < strlen(s);x++)
    perchè ogni volta che ripete il ciclo esegue anche la funzione strlen con altre iterazioni e quindi è un codice poco efficiente in termini di risparmio memoria e velocità.

    Meglio fatto così:
    codice:
    int n=strlen(s);
    for(x=4;x < n;x++)

  5. #5
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.