Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C] Problema con funzione system

    Salve a tutti, sono nuovo (:

    Ho un problema con la funzione system, come si capisce dal titolo: dovrei fare un'applicazione per console che esegua il ping di un sito, io l'ho realizzato come segue.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void){
    	system("cls");
    
    	char indirizzo[50];
    
    	printf("Inserire l'indirizzo: ");
    	gets(indirizzo);
    
    	system("ping %s",indirizzo);
    
    	system("pause");return(0);
    }
    ____

    So che quello che ho scritto è uno strafalcione assurdo, ma è solo per dare un'idea di quello che dovrei fare.
    Il problema è questo: come faccio ad inserire la variabile "indirizzo" nella funzione system, sempre se è possibile?

    Grazie a tutti in anticipo! (:

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Usa sprintf...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Scusa ma non capisco come funziona.. Non puoi fare un esempio?
    Tipo: printf("quello che voglio stampare");
    Perché non ho mai usato la sprintf e leggendo non ho capito come usarla..

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Nella pagina segnalata c'è già un esempio ...

    codice:
    /* sprintf example */
    #include <stdio.h>
    
    int main ()
    {
      char buffer [50];
      int n, a=5, b=3;
      n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);
      printf ("[%s] is a %d char long string\n",buffer,n);
      return 0;
    }
    Ci hai dato un'occhiata attenta?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Sì e non ho capito cosa c'entri con la funzione system perchè io non devo stampare ma eseguire il ping, se io metto system("ping 1.0.0.7"); stampa i risultati da solo, senza bisogno di printf o sprintf, per questo ho chiesto un esempio..

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Caste747
    Sì e non ho capito cosa c'entri con la funzione system
    La system accetta una stringa e alla system passerai una stringa che deve essere "formata" prima con la sprintf.

    A prescindere dalla system, in base a quell'esempio, dovresti essere in grado di ottenere una stringa completa con quello che ti serve. Poi la passi alla system.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Ok, io ho fatto:

    codice:
    int main(void){
    	system("cls");
    
    	char indirizzo[50];
    
    	printf("Inserire l'indirizzo: ");
    	gets(indirizzo);
    
    	sprintf(indirizzo,"ping %s");
    
    	system("pause");return(0);
    }
    Non voglio che mi diate la pappa pronta, però ancora non riesco proprio a capire come passare la stringa che formo con sprintf al system..

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai capito come funziona la sprintf? Perché sembra questo il problema ...

    Funziona come la printf a parte il fatto che la destinazione non è il video ma un'altra stringa passata come primo parametro.

    Quindi,

    codice:
    char cmd[60]
    sprintf(cmd, "ping %s", indirizzo);
    A questo punto la stringa cmd la puoi usare con la system ...

    E' più difficile a dirsi che a farsi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Ok, grazie a tutti ragazzi.. Il problema ero io che non avevo capito come funzionava la sprintf :P Siete stati gentilissimi, grazie ancora! (:

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 © 2025 vBulletin Solutions, Inc. All rights reserved.