Kommando Interpreter C

Ich arbeite ohne IDE,weil es so gefordert ist.
Ah ja. Du warst ja der mit dem C89-Standard-IBM-Compiler. Auftragsmörder schon engagiert?
Debugger auch nicht erlaubt? Da ist ja komisch, dass du einen Texteditor verwenden darfst. Ein Hexeditor tut es doch auch.
</s>
Du hast in deinem Code "Invalid parameters" falls argc <= 0 ist,also es keine Argumente gibt.Wie erreiche ich aber dies?Wenn ich nichts eingebe,kommt diese Meldung auch nicht.
Du hast in deinem Code "Invalid parameters" falls argc <= 0 ist,also es keine Argumente gibt.
Ja, denn dann würde bspw. der "Median" (der keiner ist) nicht funktionieren.
Wie erreiche ich aber dies?Wenn ich nichts eingebe,kommt diese Meldung auch nicht.
Was heisst "nichts"?
Code:
adder <
sorgt für den error,
Code:
adder
lässt nachfolgende Eingaben zu.

Gruss
cwriter
 
Ah ja. Du warst ja der mit dem C89-Standard-IBM-Compiler. Auftragsmörder schon engagiert?
Debugger auch nicht erlaubt? Da ist ja komisch, dass du einen Texteditor verwenden darfst. Ein Hexeditor tut es doch auch.
</s>


Ja, denn dann würde bspw. der "Median" (der keiner ist) nicht funktionieren.

Was heisst "nichts"?
Code:
adder <
sorgt für den error,
Code:
adder
lässt nachfolgende Eingaben zu.

Gruss
cwriter
Dank cwriter.Und gutes neues Jahr!

Wie kann man bei

C++:
ptr->parv = (char**)malloc(sizeof(char*)*parc);
...
ptr->parv[i] = (char**)malloc(sizeof(char*)*parv[i]+1);

testen,ob malloc geklappt hat?

Wie hier?:

C++:
       ptr = (cmd_desc*)calloc(1, sizeof(cmd_desc));
       if (ptr == NULL)
       {
               printf("Allocation failed.\n");
               exit(1);
       }
 
Ah ja. Du warst ja der mit dem C89-Standard-IBM-Compiler. Auftragsmörder schon engagiert?
Debugger auch nicht erlaubt? Da ist ja komisch, dass du einen Texteditor verwenden darfst. Ein Hexeditor tut es doch auch.
</s>


Ja, denn dann würde bspw. der "Median" (der keiner ist) nicht funktionieren.

Was heisst "nichts"?
Code:
adder <
sorgt für den error,
Code:
adder
lässt nachfolgende Eingaben zu.

Gruss
cwriter
Kurze Frage.Muss man bei deinem Code im Main dies machen:

C++:
if (d == NULL)
{
   printf("Error occurred.\n");
   free(cmd_desc_arr);
   free(buf);
   free(bufbase);
   exit(1);
}

Und ganz am Ende bei "end:" free(buf); hinzufügen?
 
Mhm. Zumindest, wenn du noch nichts im cmd_desc_arr hast.
Allerdings ist buf==bufbase, also nur eines der beiden freigeben.

Hm. Sag du es mir. Zeig mal deine Gedankengänge.

Gruss
cwriter[/QUOO
Mhm. Zumindest, wenn du noch nichts im cmd_desc_arr hast.
Allerdings ist buf==bufbase, also nur eines der beiden freigeben.

Hm. Sag du es mir. Zeig mal deine Gedankengänge.

Gruss
cwriter
Ok am Ende brauch ich es nicht,da bereits free(bufbase); dort steht.

Jedoch beim obigen bin ich unsicher.Aber ich würde sagen auch hier würde free(bufbase); und free(cmd_desc_arr); reichen,oder?
 
Ok am Ende brauch ich es nicht,da bereits free(bufbase); dort steht.
Nicht nur. free(buf) könnte schlicht falsch sein (Warum?)
Aber ich würde sagen auch hier würde free(bufbase); und free(cmd_desc_arr); reichen,oder?
Sofern nichts im cmd_desc_arr ist, ja.
(Ein netter Kerl hat mal eine Funktion geschrieben, die das Aufräumen übernehmen sollte:
C:
        for (; i < arr_size; i++)
        {
                clear_cmd_desc(&cmd_desc_arr[i]);
        }
)

Gruss
cwriter
 
Zurück