Seite 1 von 1

die letzten vier stellen aus einem char entnehmen und bearbeiten

Verfasst: 19. Okt 2007 14:14
von equal
hallo,

ich habe beispielsweise folgende daten:
jpg/img-0001
jpg/image-0002
tiff/pic-0200
png/pic-9999

daraus möchte ich die zahlen der hinteren vier stellen ermitteln und als integer einlesen

also so:
jpg/img-0001 wird "1"
jpg/image-0002 wird "2"
tiff/pic-0200 wird "200"
png/pic-9999 wird "9999"

vielen Dank und viele Grüße

Verfasst: 22. Okt 2007 22:47
von sesame
Sicherlich gibt's mehrere Lösungsvorschläge, hier einer unter C:

1. charlänge bestimmen.
2. mittels for/while - schleife von hinten an die letzten 4 zeichen einlesen in ein eigenes Array.

Verfasst: 24. Okt 2007 8:40
von Lateralus
Muss es denn C sein? Hier das ganze als Shellskript:

getnum:

Code: Alles auswählen

#!/bin/sh
# Verwendung: getnum [Dateiname]

IFS="
"

for line in $(cat "$1"); do
        no="${line##*-}"
        echo "$(($no*1))"
done
Das macht nicht genau das beschriebene (wäre auch möglich) bei dieser Form von Daten sollte es aber gehen.

Falls es wirklich C sein muss: man 3 scanf

Verfasst: 01. Nov 2007 8:17
von frb

Code: Alles auswählen

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

int main&#40;int argc, char **argv&#41; &#123;

	char *str = "jpg/img-0001";
	char *ptr = NULL;
	int num;

	/* entweder nach '-' suchen&#58; */
	/* ------------------------- */
	if&#40;! &#40;ptr = strrchr&#40;str, '-'&#41;&#41; &#41;
		return 1;
	num = atoi&#40;ptr +sizeof&#40;char&#41;&#41;;
	printf&#40;"%d\n", num&#41;;

	/* oder 4 Zeichen zurück zählen&#58; */
	/* ----------------------------- */
	if &#40;strlen&#40;str&#41; < 4&#41;
		return 1;
	ptr = &str&#91;strlen&#40;str&#41;-4&#93;;
	num = atoi&#40;ptr&#41;;
	printf&#40;"%d\n", num&#41;;

return 0;
&#125;
Die Prüfung, ob der wie auch immer übergebene String den vorausgesetzten Konventionen entspricht, ist eine andere Baustelle.