Pagina 5 di 5 primaprima ... 3 4 5
Visualizzazione dei risultati da 41 a 45 su 45
  1. #41
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da ramy89
    In poche parole,argc è il numero dei processi creati,argv è un' array di strighe o una matrice di
    argc è il numero di argomenti passati al programma (arguments counter). Di default è 1 perché il primo argomento (cioè la prima stringa di argv) è il nome del programma stesso; è possibile aumentarlo passando appunto degli argomenti al programma, per esempio con

    codice:
    ./nome_eseguibile ciao come stai
    in questo caso argc varrà 4 e nel vettore argv ci saranno, nell'ordine

    codice:
    argv[0] = ./nome_eseguibile
    argv[1] = ciao
    argv[2] = come
    argv[3] = stai
    E' possibile poi stabilire degli argomenti anche in un IDE (senza ricorrere alla riga di comando) sfruttando apposite opzioni che ogni buon IDE dovrebbe fornire (in caso contrario, buttare l'IDE incontanente).

    Attenzione alle informazioni che date sul forum. Se non siete sicuri di quello che dite rischiate di confondere gli altri

    E comunque ho l'impressione che questo thread stia andando avanti un po' a casaccio
    every day above ground is a good one

  2. #42
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487
    Originariamente inviato da ramy89
    E per il resto il mio argc è sempre restato fermo a 1,mi sa che per farlo cambiare si deve usare una funzione come CreateProcess in windows.h,ma sinceramente odio questa libreria perchè secondo me si può fare tutto meglio in python,che purtroppo all' università non ho ancora studiato.
    Non cambia assolutamente niente in ambiente windows se lanci l'applicazione con doppio click, collegamento, da console, CreateProcess(), ShellExecute...blablabla
    Quello che importa è che esistono più metodi per lanciare l'applicazione (diverse combinazioni path, parametri), indipendente dalla API utilizzata dato che in realtà a livello Kernel il metodo per lanciare processi è SEMPRE quello.

    Per esempio se scrivi sul cmd notepad.exe ti apre il notepad, con argv[0] = "C:\system32\notepad.exe" (oppure "notepad.exe" dipende da alcuni fattori)
    Se apri Nuovo Documento Di testo.txt notepad verrà aperto con argc = 2, con argv[1] = al percorso o nome del file da aprire.

    Tanto per darti un idea delle possibili combinazioni di argv...in ambiente windows intendo, guarda questo estratto dalla documentazione di CreateProcess()

    c:\program.exe files\sub dir\program name
    c:\program files\sub.exe dir\program name
    c:\program files\sub dir\program.exe name
    c:\program files\sub dir\program name.exe

    quando tu avvi un eseguibile, windows prova l seguenti combinazioni, e bisogna considerare anche i percorsi contenuti nella variabili d'ambiente...quindi fa conto te!

  3. #43
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Direi che è risolto se,come detto da YuYevon (tutti i diritti riservati ),si passa argv[1] alla funzione.
    Poi nel codice va copiato argv[1] invece che argv[0],ma comunque in generale chi fa partire il codice sa in che cartella sta il codice,quindi basta farlo partire non da terminale,o modificare il codice passando tramite la shell di windows o di linux il path.
    Comunque io uso linux per queste cose.
    Direi che il thread è allora risolto se non ci sono altri problemi che non ho capito.

  4. #44
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    mmm

    Io direi che entrambe le soluzioni che hai proposto sono poco sensate, senza offesa però se hai visto che funzionano, buon per te!

  5. #45
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    ok ragazzi, mille grazie. Ho capito che una soluzione completamente portatile e standard non c'è. Esistono differenti metodi per ogni sistema operativo.

    Con getcwd mi mostra da dove parte l'eseguibile e non dov'è situato. Se ad esempio buildo il programma, lo prendo e lo metto in desktop, mi stampa sempre la home come indirizzo e non quella del desktop (su mac con avvio doppio click). Per cui bisogna fare attenzione a come si utilizza questo comando.

    Tra l'altro immagino che la cwd sia poi la cartella dove vengono creati e salvati i file realizzati con un classico fopen("file","w"); o no? (dalle mie prove così mi è sembrato).

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.