die letzten vier stellen aus einem char entnehmen und bearbeiten

Antworten
Nachricht
Autor
equal

die letzten vier stellen aus einem char entnehmen und bearbeiten

#1 Beitrag von equal » 19. Okt 2007 14:14

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

sesame

#2 Beitrag von sesame » 22. Okt 2007 22:47

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.

Benutzeravatar
Lateralus
prolinux-forum-admin
Beiträge: 1238
Registriert: 05. Mai 2004 7:35

#3 Beitrag von Lateralus » 24. Okt 2007 8:40

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

frb

#4 Beitrag von frb » 01. Nov 2007 8:17

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.

Antworten