Umwandeln von char* Pointer nach char

22/02/2011 - 14:22 von gismo82 | Report spam
Hallo,

ich habe folgendes Problem. Mit dem folgenden Programm extrahiere ich
einzelne Buchstaben aus einem String. Leider sind diese vom Typ char*.

Ist es möglich, diese in den Typ char umzuwandeln? Bzw. gibt es eine
andere Möglichkeit, aus einem String ein char auszulesen?

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

char* substring(const char* str, int begin, int len) {

if (str == 0 || strlen(str) == 0 || strlen(str) < begin ||
strlen(str) < (begin+len))
return 0;

return strndup(str + begin, len);
}

int main(void) {

char* string = "ABCDEFGHIJK";
char* character;

printf("%s", substring(string, 0, 1)); // A
printf("%s", substring(string, 3, 1)); // D
printf("%s", substring(string, 10, 1)); // K

return 0;
}


Gruß Andreas
 

Lesen sie die antworten

#1 Rainer Weikusat
22/02/2011 - 16:14 | Warnen spam
gismo82 writes:
ich habe folgendes Problem. Mit dem folgenden Programm extrahiere ich
einzelne Buchstaben aus einem String. Leider sind diese vom Typ char*.

Ist es möglich, diese in den Typ char umzuwandeln? Bzw. gibt es eine
andere Möglichkeit, aus einem String ein char auszulesen?


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

char* substring(const char* str, int begin, int len) {

if (str == 0 || strlen(str) == 0 || strlen(str) < begin ||
strlen(str) < (begin+len))
return 0;

return strndup(str + begin, len);
}



Vorrausgesetzt Du moechtest wirklich nur einen Buchstaben:

int char_at(char const *s, unsigned ofs)
{
while (ofs && *s) ++s, --ofs;
return *s;
}

Es waere allerdings sinnvoller, die Laenge einmal zu ermitteln (dh
strlen EINmal 'ausserhalb' aufzurufen), den offset mit der bekannten
Laenge zu vergleichen und s[ofs] zu benutzen, falls ofs < laenge gilt.

Ähnliche fragen