char in int umwandeln?

Gast
Wenn ich mich nicht irre, dann ist die Frage: "Was ist der Wert dieser 
Dezimalstelle?"

Wenn ja, dann lautet das Ergebnis:
1
char hans[] = "01234567890";
2
int wert = hans[9] - '0';
3
printf("Der Wert der zehnten Stelle ist %d\n", wert);

Wenn natürlich Sachen wie Fehlerbehandlung interessant sind, dann bietet 
sich vielleicht noch folgendes an:
1
char hans[] = "01234567890";
2
int wert = -1;
3
if ( isdigit(hans[9]) )
4
{
5
  wert = hans[9] - '0';
6
}
7
printf("Der Wert der zehnten Stelle ist %d\n", wert);

Dann sagt uns zumindest die -1, dass hier keine Dezimalziffer vorlag!
Gast
> atoi gibt immer null zurück...
atoi erwartet einen '0-terminierten String':
1
char heinz[2]; //mindestens 2
2
char otto [] = "Es ist die 2te Stelle";
3
int i;
4

5
// 11 Stelle in heinz speichern
6
heinz[0] = otto[11];
7
heinz[1] = 0;
8

9
// Char in Integer wandeln
10
i = atoi(heinz);

Aber Rainer hat schon recht: atoi ist overkill, wenn es nur um eine 
Stelle geht.

hth. Jörg
moin,

der beitrag ist zwar schon etwas ölter aber vllt guckt ja doch noch jmd 
rein...

ich habe ein array von strings gegeben:

char texte[ANZAHL][MAXLEN] = { "tümä", "zoäö", "yköa"};

und soll die umlaute zb. "ä" durch "ae" ersetzen.

im skript des profs gibt es diese funktion:
//--------------------------
int c;

while ((c = getchar())!= EOF)
{
switch(c)
{
 case 0x84:
  putchar('a');
  putchar('e');
  break;
 case 0x94:
  putchar('o');
  putchar('e');
  break;
 case 0x81:
  putchar('u');
  putchar('e');
  break;
 default:
  putchar(c);
}
//----------------------------

wie kriege ich den string der reihe nach zeichenweise ausgelesen um die 
zeichen durch die whileschleife zu schicken.
getchar() fragt den user nach ner eingabe, diese soll aber nicht gemacht 
werden, weil der string schon vorhanden ist.

meine überlegung war, die strings mit zwei for-schleifen durchzulaufen 
und jedes zeichen von char in int umwandeln und dann in die 
switchabfrage...

vllt hat ja jmd nen guten rat, ich wäre auf jeden fall sehr froh!

vielen dank im voraus.
Normalerweise nimmt man hierzu eine Schere oder eine Kopierfunktion,
extrahiert sozusagen die Zahl Netto, und
konvertiert den Ausschnitt bzw. den Auszug in eine Zahl.

Liegt die Zahl z.B. am Ende eines Bereiches, so kann man auch dessen 
Adresse an atoi übergeben. Wichtig ist hierbei, dass keine Nichtzahlen 
folgen, bzw. sich im übergeben Bereich befinden.
Muss aber nicht so machen...
Tim S. schrieb:
> der beitrag ist zwar schon etwas ölter aber vllt guckt ja doch noch jmd
> rein...

Deine Frage hat sehr wenig mit dem Thema zu tun.
Nach der Zeit ist ein neuer Thread sehr empfehlenswert.

Ein char ist eine Ganzzahl mit kleinem Wertebereich.

Ob du 65 oder 0x41 oder 'A' schreibst ist egal, gibt (bei ASCII) 
denselben Wert.

Bei Umlauten ist es schwieriger, deren Wert sehr abhängig vom gewählten 
Code/Codepage ist.

Dein größeres Problem wird sein, dass du jetzt 2 Zeichen anstelle von 
einem unterbringen musst.
Tim S. schrieb:
> der beitrag ist zwar schon etwas ölter aber vllt guckt ja doch noch jmd
> rein...
>
> ich habe ein array von strings gegeben:
>
> char texte[ANZAHL][MAXLEN] = { "tümä", "zoäö", "yköa"};
>
> und soll die umlaute zb. "ä" durch "ae" ersetzen.

Und was hat das jetzt mit dem ursprünglichen Thema zu tun?

> meine überlegung war, die strings mit zwei for-schleifen durchzulaufen
> und jedes zeichen von char in int umwandeln und dann in die
> switchabfrage...

Wozu zwei Schleifen? Und der char wird ganz von selbst in int 
umgewandelt. Da muss man nichts tun. Du musst eigentlich nur den Teil 
zwischen den runden Klammern in der while-Schleife ändern, sonst nichts.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.