PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String Funktion für Ende eines Strings..??



Skipp3r
11-07-2007, 09:43
Hey... Ich muss bei einem Programm das Ende eines Strings auslesen können um nach zu schauen ob dieses Zeichen ein Doppelpunkt ist!

Kann mir da jemand vielleicht weiterhelfen? wär echt super....

Hier mal das Programm:


#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

int main(int argc, char *argv[1])
{char *eargv;
const char mba[] ="mba";
char *mbox = argv[1];

if (argc ==2)
{
if (strncmp(mbox, mba, strlen(mba)) == 0 &&
sscanf(mbox + strlen(mba), "%u:%c", &u, &c) == 1) /* Hier soll die Abfrage nach dem Doppelpunkt hin */
{
eargv=argv[1]+strlen(argv[1]);
printf ("Argument[1] von Adresse: %x .. %x = %s \n",
argv[1], eargv, argv[1]);
}
else
{printf("\nFehler, falscher Parametername.");
printf("\nBeispiele: 'mba33:' oder 'mba5:'\n");
}
}
else
{printf("\n Du hast zuviele Parameter eingegeben\n");
printf("Beispiele: 'mba33:' oder 'mba5:'\n");
}

return 0;

}

Wenn ihr auch ne andere Möglichkeit habt wie man das Lösen kann dann nur her damit...

Danke schonmal im Vorraus....

peschmae
11-07-2007, 19:17
Hallo!

Also erst mal verstehe ich deinen Code nicht wirklich ;)



sscanf(mbox + strlen(mba), "%u:%c", &u, &c) == 1)


Du schreibst ungefähr 3 Bytes nach dem Begin von argv[1]. Der Speicher kann *irgendwem* gehören. Wenn argv[1] genug lang ist gehört er dazu. Aber selbst wenn das so ist muss er nicht schreibbar sein und überhaupt...

Trotzdem zwei Sachen:
Den "unsigned int u" solltest du noch definieren.
Prüfen ob das Ende eines Strings ein : ist:
if(string[strlen(string)-1] == ':')


MfG Peschmä