Jak upravit pozici ukazatele typu char*? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Jak upravit pozici ukazatele typu char*? – C / C++ – Fórum – Programujte.comJak upravit pozici ukazatele typu char*? – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
oxidián0
Věrný člen
20. 1. 2015   #1
-
0
-

Můžete mi poradit proč

[CODE]arguments[n][c][0]=pPrevious-1-previousLength;[/CODE] vrací hlášku:

assignment makes integer from pointer without a cast [enabled by default]|

Chci upravit pozici ukazatele char *.

[CODE]
bool parseKernelArgs(char * path, FILES * files, SETTINGS * settings){
  if (path != NULL){
        // settings->argumentsCount;
    }
  else // READING kernel args from config
    {
    int n=0;
    char*pCopy;char*pPrevious;char*pWord;
    size_t size, previousLength;
    int c, count;
    for (; n<settings->argumentsCount; n++ )
        {
        pCopy = settings->arguments[n]; // just copy pointer
        pWord = pCopy;
        pPrevious = pCopy;
        c = 0;
        while(pCopy && *pCopy) {
           pCopy = strchr(pCopy, settings->separator);
           if (pCopy) pCopy++;
           c++;
        } ;
        count = c;
        pCopy=pPrevious;
        arguments[n]=malloc(count*sizeof (char**));
        previousLength=0;
        for(c=0; c<count;c++) {
            /* [0] - begin of param name
               [1] - end of param name
               [2] - begin of value
               [3] - end of value
            */
           arguments[n][c]=malloc(4*sizeof (char*));
           pCopy = strchr(pCopy, settings->separator);
           size= pCopy-pPrevious;
           pWord = memchr(pPrevious, '=', size);
           pPrevious=pWord;
           previousLength=size;
           if (pWord!=NULL)
               {
                arguments[n][c][0]=pPrevious-1-previousLength;
                arguments[n][c][1]=pWord-1;
                arguments[n][c][2]=pWord+1;
                arguments[n][c][3]=pCopy-1;
               }
           else
               {
               arguments[n][c][0]=NULL;
               arguments[n][c][1]=NULL;
               arguments[n][c][3]=pCopy-1-previousLength;
               arguments[n][c][3]=pCopy-1;
               }
           } ;
 
        }
    }
}
[/CODE]

Nahlásit jako SPAM
IP: 78.45.199.–
Reklama
Reklama
KIIV+42
God of flame
20. 1. 2015   #2
-
0
-

#1 oxidián
tezko rict, kdyz sem nedas datovy typ toho arguments...

pravdepodobne ses o uroven dal, nez myslis

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
oxidián0
Věrný člen
20. 1. 2015   #3
-
0
-

arguments je char *** arguments;

když to breaknu na arguments[n][c][0] tak hodnota arguments[n][c][0] je 13 '\r'. Naposledy jsem allokoval arguments[n][c] měl bych alokovat i arguments[n][c][0] i když tam má být uložený odkaz na jiný řetězec?

Nahlásit jako SPAM
IP: 78.45.199.–
KIIV+42
God of flame
20. 1. 2015   #4
-
0
-

no jak to funguje (zpusob pristupu => jaky je tam typ):

arguments  =>  char ***            alokace: malloc(x*sizeof(char**))

arguments[n] =>  char **          alokace: malloc(y*sizeof(char*))

arguments[n][m] => char *        alokace: malloc(z*sizeof(char))

arguments[n][m][l] => char        alokace: nesmysl - je to znak

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
oxidián0
Věrný člen
20. 1. 2015   #5
-
0
-

Takže tam musím dát brutální char **** arguments :-) Teď to už funguje akorát vyladit ty pointery aby to sedělo jak potřebuju.

Nahlásit jako SPAM
IP: 78.45.199.–
KIIV+42
God of flame
20. 1. 2015   #6
-
0
-

vzdy jde pouzit i jednorozmerny pole a pozice si vypocitat podle toho, co chces ziskat

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
oxidián0
Věrný člen
20. 1. 2015   #7
-
0
-

To je fakt, ale takhle je to přehlednější. Aspoň mám takový dojem

Nahlásit jako SPAM
IP: 78.45.199.–
vitamin+8
Grafoman
21. 1. 2015   #8
-
0
-

#7 oxidián
Ci je to prehladnejsie je otazne, ale aspon sa naucis pracovat s pointrami. Pridaj tam este Pointre na funkie a bude to uplne super   

Nahlásit jako SPAM
IP: 195.28.77.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
oxidián0
Věrný člen
21. 1. 2015   #9
-
0
-

Právě včera jsem ty pointery na funkce četl protože to zrovna potřebuju. No je to super.

Nahlásit jako SPAM
IP: 78.45.199.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 82 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý