die letzten vier stellen aus einem char entnehmen und bearbeiten

Post Reply
Message
Author
equal

die letzten vier stellen aus einem char entnehmen und bearbeiten

#1 Post by 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

sesame

#2 Post by 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.

User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

#3 Post by Lateralus »

Muss es denn C sein? Hier das ganze als Shellskript:

getnum:

Code: Select all

#!/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 Post by frb »

Code: Select all

#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.

Post Reply