Strona 1 z 3 123 OstatniOstatni
Pokaż wyniki 1 do 10 z 29

Temat: Wskaźnikologia - problemy

  1. #1
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie Wskaźnikologia - problemy

    #include<unistd.h>
    #include<stdio.h>
    #define FILE "/etc/i"
    int main(void)
    {
    char *const a;
    char buf[]="AAA";
    char *const b;
    char envp[]="buff";
    a=&buf[0];
    b=&envp[0];
    execve(FILE, *a, *b);
    }

    lukasz@bash:~$ gcc -o a a.c
    a.c: W funkcji `main,:
    a.c:10: błąd: assignment of read-only variable `a,
    a.c:11: błąd: assignment of read-only variable `b,
    a.c:12: ostrzeżenie: przekazywanie argumentu 2 funkcji `execve, robi wskaźnik z liczby całkowitej bez rzutowania
    a.c:12: ostrzeżenie: przekazywanie argumentu 3 funkcji `execve, robi wskaźnik z liczby całkowitej bez rzutowania
    lukasz@bash:~$


    całkowicie zapomnialem wskaznikologie gdyz dawno bawiłem sie z C i nie moge sobie poradzic z tym banalnym programem...co jest nie tak

    i gdy mam taką funkcje
    #include <unistd.h>

    int execve(const char *filename, char *const argv [], char *const
    envp[]);

    to zmienne opowinne byc zadeklarowane tak:
    #define FILENAME "COSTAM"
    a reszta jakpowinienem zadeklarowac stały wskaźnik o tak char *const a; i pózniej przypisac adres początka bufora zmiennej awezcie tak w skrócie napiszcie ja macie czas i czaicie to dobrze...

  2. #2

    Domyślnie

    #include<unistd.h>
    #include<stdio.h>
    #define FILE "/etc/i"
    int main(void)
    {
    char const *a;
    char buf[]="AAA";
    char const *b;
    char envp[]="buff";
    a=&buf[0];
    b=&envp[0];
    execve(FILE, &a, &b);
    }

  3. #3
    Zarejestrowany
    May 2008
    Postów
    534

    Domyślnie

    const jest udziwnieniem c, ja tego nigdy nie uzywam.

    int a,b; int = 4 bajty. Po co wiec pisac *a,*b?

    a potem juz tylko a = &buf[0], b = &envp[0].

    execve(FILE, a, b);

  4. #4

    Domyślnie

    no ja bym powiedizał że const jest dosyć przydatny...

  5. #5
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie

    Ale tam argumenty wymagają stałesj typu char i wskaźnika stałego na bufor....wiec wytłumaczcie dlaczego zadeklarowaliscie bugor jako zwykłą zmienna i zwykły wskaźnik...nie bardzo czaje argumenty funkcjii mógłby ktos w skrócie bo czytam o tym i nie moge zrozumiec....?

  6. #6
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie

    Cytat Napisał rip Zobacz post
    const jest udziwnieniem c, ja tego nigdy nie uzywam.

    int a,b; int = 4 bajty. Po co wiec pisac *a,*b?

    a potem juz tylko a = &buf[0], b = &envp[0].

    execve(FILE, a, b);
    Ten programik nie podzaiła gdyż musowo przed przypisasniem zrzutować a i b...

  7. #7
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie

    Cytat Napisał k_enhap Zobacz post
    #include<unistd.h>
    #include<stdio.h>
    #define FILE "/etc/i"
    int main(void)
    {
    char const *a;
    char buf[]="AAA";
    char const *b;
    char envp[]="buff";
    a=&buf[0];
    b=&envp[0];
    execve(FILE, &a, &b);
    }
    lukasz@bash:~$ gcc -o a a.c
    a.c: W funkcji `main,:
    a.c:12: ostrzeżenie: passing argument 2 of `execve, from incompatible pointer type
    a.c:12: ostrzeżenie: passing argument 3 of `execve, from incompatible pointer type
    a.c: Na najwyższym poziomie:
    a.c:14: błąd: expected `=,, `,,, `;,, `asm, or `__attribute__, before `With,

    bład...nuiech ktos skoryguje ten rogramik

  8. #8
    Zarejestrowany
    Apr 2008
    Postów
    200

    Domyślnie

    Kod:
    #include <unistd.h>
    #include <stdio.h>
    #define FILE "/etc/i"
    int main(void)
    {
      char *buf = { "AAA" };
      char *envp = { "buff" };
      execve(FILE, &buf, &envp);
      return 0;
    }

  9. #9
    Zarejestrowany
    May 2007
    Postów
    406

    Domyślnie

    http://www.opengroup.org/onlinepubs/...ions/exec.html

    Kod:
    #include <unistd.h>
    
    int ret;
    char *cmd[] = { "ls", "-l", (char *)0 };
    char *env[] = { "HOME=/usr/home", "LOGNAME=home", (char *)0 };
    ...
    ret = execve ("/bin/ls", cmd, env);
    Ostatnio edytowane przez kaspsior : 07-08-2008 - 10:35

  10. #10
    Zarejestrowany
    Apr 2008
    Postów
    348

    Domyślnie

    co oznacza ten zapis char *const a[] -jezeli takiego argumentu spodzieqa sie funkcja to jak powinna byc zadeklarowana funkcja zeby można było przekazac jej tą zmienna jako argumentznacie jakis porządny faq o przekazywniu funkcjom zmiennych-wielu przykładow bo ja szukałem ale nic specjalnego nie znalazlem...niech nikt za mnie nie szuka tylko jak ktos ma od razu pod reką albo cos w tym stylu nich napisze, bo nie chce zeby ktos za mnie szukał

Strona 1 z 3 123 OstatniOstatni

Podobne wątki

  1. 2 problemy (pomocy )
    By men01 in forum GSM/GPRS/EDGE/UMTS
    Odpowiedzi: 5
    Autor: 02-27-2009, 00:29
  2. Problemy z gdb
    By lukasz6547 in forum Hacking
    Odpowiedzi: 1
    Autor: 04-13-2008, 16:33
  3. Linux problemy
    By Malcolm2600 in forum Linux
    Odpowiedzi: 3
    Autor: 03-15-2008, 13:38
  4. problemy z polanczeniem....
    By ironwall in forum Hacking
    Odpowiedzi: 7
    Autor: 04-02-2007, 19:50
  5. Moje problemy z c++
    By w4j in forum C/C++
    Odpowiedzi: 18
    Autor: 03-04-2007, 00:49

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj