Anzahl der Zeichen eines Strings ermitteln

Cherrycoke

Mitglied
Hallo Community,

ich bereite mich gerade auf eine Prüfung vor, und gehe dazu einige Aufgaben durch. Nun soll ich zuerst einmal die Anzahl der Zeichen eines Strings ermitteln. Leider scheitere ich schon daran.

Ich habe folgendes versucht:

Code:
#include <stdio.h>

int main (void){

	char eingabe[31];

	printf("String eingeben:\n");
	scanf("%s", eingabe);

	int i = 0;
	printf("%s", eingabe);

	while ( eingabe[i] != "\0"){		
		i = i+1;
	}
       /* i sollte nun die Anzahl der Zeichen beinhalten */

       return 0;
}
}

Wäre coll, wenn mir jemand kurz helfen könnte. Danke!
 
Vielleicht geht:
-------------------------
Code:
int length = 0;

for(i=0; eingabe[i] != "\0"; i++) 
{
length++;
}
/* length sollte nun die Anzahl der Zeichen beinhalten */


oder probiere mal:
-------------------------
Code:
#include <string.h>

char s* = "Hallo Fritz!"

int length = strlen(s); /* length sollte nun die Anzahl der Zeichen beinhalten */

Beispiel 2 sollst du natürlich auf die Eingabe «eingabe[i]» ummünzen, aber
du schaffst das schon ;)
 
Hi

Das
"\0"
muss heißen
'\0'

Die einfachen Anführungszeichen von der #-Taste verwenden!

War ja klar, dass es wieder mal so ein "kleines" Problem war. Danke euch für eure Hilfe!

Eine andere Frage habe ich aber noch. Nun soll ich prüfen, ob die Eingabe nur aus a-z (Kleinbuchstaben) und/oder 0-9 besteht. Wie löse ich das denn am Besten? Ich nehme an, dass es nicht sehr elegant ist für jedes Arrayfeld eine If-Abfrage der Art if (eingabe[0] = 'a' || 'b' || ...) zu machen. Weiterhin soll ich mich aus Gründen der Portabilität nicht auf eine bestimmte Codierung verlassen.

Hat hierzu noch jemand einen Tipp für mich?
 
Du musst ja nicht jeden Buchstaben einzeln angeben, zB für jedes Element
Code:
if(!(a[b]>='a'&&a[b]<='z')||(a[b]>='0'&&a[b]<='9')){/*Fehler*/}

Alternativ gibts Funktionen wie isdigit etc

Welche anderen Codierungen? EBCDIC?
Solange du nicht für IBM-Großrechner programmierst, sondern im PC-Bereich bleibst, wird dir vermutlich nie was anderes als ANSI/ASCII/Unicode etc begegnen, unabhängig von Betriebssystem etc
Und die ersten 127 Zeichen von den genannten sind sowieso gleich; also geht der Code bei allen drei Fällen

Gruß

PS: Danke für die Bewertung! Das hat für den dritten Punkt gereicht :-)
 
Du musst ja nicht jeden Buchstaben einzeln angeben, zB für jedes Element
Code:
if(!(a[b]>='a'&&a[b]<='z')||(a[b]>='0'&&a[b]<='9')){/*Fehler*/}

Naja, die Aufgabenstellung besagt, dass ich nicht von einer speziellen Kodierung ausgehen darf. Das verstehe ich so, dass ich nicht von ausgehen darf, dass die Buchstaben nebeneinander liegen - wenn ich sie vergleichen möchte. Ist einfach die Aufgabenstellung. :-)

Alternativ gibts Funktionen wie isdigit etc

Hmm, die hatte ich jetzt auch gefunden. Damit funktioniert es nun wunderbar. Mich erstaunt es nur, dass ich sie nicht in meinen Vorlesungsunterlagen finden kan, aber solche Aufgaben gefordert werden. Wäre in der Prüfung schon ein bisschen suboptimal. :-D

Welche anderen Codierungen? EBCDIC?
Solange du nicht für IBM-Großrechner programmierst, sondern im PC-Bereich bleibst, wird dir vermutlich nie was anderes als ANSI/ASCII/Unicode etc begegnen, unabhängig von Betriebssystem etc
Und die ersten 127 Zeichen von den genannten sind sowieso gleich; also geht der Code bei allen drei Fällen

Wie bereits oben erwähnt, steht es einfach so in der Aufgabenstellung. Ich konnte mir erst auch nicht vorstellen, was damit gemeint ist. Aber wir wollen uns ja mal an die Aufgabenstellung halten. 8-)

PS: Danke für die Bewertung! Das hat für den dritten Punkt gereicht :-)

Keine Ursache! *lol*
 
Welche anderen Codierungen? EBCDIC?
Solange du nicht für IBM-Großrechner programmierst, sondern im PC-Bereich bleibst, wird dir vermutlich nie was anderes als ANSI/ASCII/Unicode etc begegnen, unabhängig von Betriebssystem etc
Und die ersten 127 Zeichen von den genannten sind sowieso gleich; also geht der Code bei allen drei Fällen
Für Unicode gilt das nur, wenn die Zeichen mit UTF-8 kodiert sind. Aber mit Multibyte-Zeichenkodierungen müsste man noch auf ganz andere Sachen achten. Ich denke nicht, dass der Aufgabesteller das einem C-Anfänger zumuten will.

Naja, die Aufgabenstellung besagt, dass ich nicht von einer speziellen Kodierung ausgehen darf. Das verstehe ich so, dass ich nicht von ausgehen darf, dass die Buchstaben nebeneinander liegen - wenn ich sie vergleichen möchte. Ist einfach die Aufgabenstellung. :-)
So hätte auch ich die Aufgabe interpretiert. Kleiner Tipp: mit einem switch lässt sich möglicherweise etwas Schreibarbeit und vielleicht sogar bei der Ausführung etwas Zeit sparen.

Grüße,
Matthias
 
Zurück