Avatar billede marn133 Nybegynder
10. maj 2006 - 17:32 Der er 8 kommentarer og
1 løsning

Hvordan indhenter man program parametre i C ?

hej eksperter...

jeg er ved at lave et GTK program i C til Linux (debian)..

programmet er en GUI til en sfv cheker

jeg har også fået det hele til at virke men jeg kan ikke finde ud af hvordan man indhenter program parametre,jeg har hørt noget om getopt() men jeg har ikke kunne finde ud af at bruge det. :(

jeg har også prøvet $1 og div. andre ting....

håber i kan hjælpe...
Avatar billede arne_v Ekspert
10. maj 2006 - 17:40 #1
int main(int argc,char *argv[])
{
    // argc = antal elementer i argv
    // argv[0] = program navn
    // argv[1] = foerste argument
    // argv[2] = andet argument
Avatar billede marn133 Nybegynder
10. maj 2006 - 18:31 #2
Problemet er at jeg bruger glade, glade laver en main.c og en callbacks.c hvor de forskellige koder til knapper osv. ligger....

Men da jeg er nybegynder i C har jeg ikke kunnet finde ud af at "hente" argv fra main.c over i callbacks.c som er den jeg skriver i....

hvordan gør man det??
Avatar billede arne_v Ekspert
10. maj 2006 - 18:51 #3
du maa vel modificere den funktion main kalder til at tage nogle argumenter

skal det vaere program parametre ? eller var en konfigurations fil en mulighed ?
Avatar billede marn133 Nybegynder
10. maj 2006 - 19:18 #4
Det skal være program paramentre ja....

jeg har overvejet at lade main.c skrive argv[0] i en fil, for derefter at lade callbacks læse den igen....


Det kan bare ikke passe at der ikke er en smartere måde....

main.c:

/*
* Initial main.c file generated by Glade. Edit as required.
* Glade will not overwrite this file.
*/

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <gtk/gtk.h>

#include "interface.h"
#include "support.h"




int
main (int argc, char *argv[])
{
  GtkWidget *window1;

#ifdef ENABLE_NLS
  bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
  textdomain (GETTEXT_PACKAGE);
#endif

  gtk_set_locale ();
  gtk_init (&argc, &argv);

  add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");

  /*
  * The following code was added by Glade to create one of each component
  * (except popup menus), just so that you see something after building
  * the project. Delete any components that you don't want shown initially.
  */
  window1 = create_window1 ();
  gtk_widget_show (window1);

  gtk_main ();
  return 0;
}
Avatar billede marn133 Nybegynder
10. maj 2006 - 19:18 #5
*argv[1]
Avatar billede arne_v Ekspert
10. maj 2006 - 19:59 #6
saa var det vel paenere med en global variabel
Avatar billede marn133 Nybegynder
10. maj 2006 - 23:38 #7
jeg har løst problemet ved at lade main.c læse ud til en fil...
Avatar billede marn133 Nybegynder
10. maj 2006 - 23:40 #8
tak for hjælpen arne_v !!!

smid et svar for point..
Avatar billede arne_v Ekspert
11. maj 2006 - 00:14 #9
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester