C :: Aufgabe #168 :: Lösung #1

3 Lösungen Lösungen öffentlich
#168

Groß- und Kleinuchstaben

Anfänger - C von MeLThRoX - 22.08.2017 um 19:03 Uhr
Erstelle ein Programm, welches in einem String die Kleinbuchstaben in Großbuchstaben umwandelt und andersherum. Zahlen und Zusatzzeichen sollen nicht beachtet werden
#1
1x
vote_ok
von devnull (8870 Punkte) - 27.08.2017 um 22:36 Uhr
Quellcode ausblenden C-Code
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include <wctype.h>
#include <stdio.h>
#include <locale.h>

#define BUFLEN 256

/* convert multi byte string from upper to lower an vice versa */
char* ul2lu(char *out, const char *in) {
	mbstate_t ps, pst;
	const char *mbin;
	char *mbout;
	wchar_t wc, wct;
	size_t wcl, wctl;

	memset(&ps, 0, sizeof(mbstate_t));
	memset(&pst, 0, sizeof(mbstate_t));
	mbin = in;
	mbout = out;
	while ((wcl = mbrtowc(&wc, mbin, MB_CUR_MAX, &ps)) > 0) {
		wct = (iswlower(wc))?(wchar_t)towupper(wc):(wchar_t)towlower(wc);
		wctl = wcrtomb(mbout, wct, &pst);
		mbout += wctl;
		mbin += wcl;
	}
	wcrtomb(mbout, L'\0', &pst);	/* terminate mb string */
	return out;
}

int main(int argc, char **argv) {
	char outbuf[BUFLEN];

	printf("locale = %s\n", setlocale(LC_ALL, ""));
	if (argc > 1) {
		printf("your string: %s\n", argv[1]);
		printf("  converted: %s\n", ul2lu(outbuf, argv[1]));
	}
	return 0;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben