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
die letzten vier stellen aus einem char entnehmen und bearbeiten
Muss es denn C sein? Hier das ganze als Shellskript:
getnum:
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
getnum:
Code: Alles auswählen
#!/bin/sh
# Verwendung: getnum [Dateiname]
IFS="
"
for line in $(cat "$1"); do
no="${line##*-}"
echo "$(($no*1))"
done
Falls es wirklich C sein muss: man 3 scanf
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv) {
char *str = "jpg/img-0001";
char *ptr = NULL;
int num;
/* entweder nach '-' suchen: */
/* ------------------------- */
if(! (ptr = strrchr(str, '-')) )
return 1;
num = atoi(ptr +sizeof(char));
printf("%d\n", num);
/* oder 4 Zeichen zurück zählen: */
/* ----------------------------- */
if (strlen(str) < 4)
return 1;
ptr = &str[strlen(str)-4];
num = atoi(ptr);
printf("%d\n", num);
return 0;
}