pointer Nutzung

Gast #1057687
Hallo,

ich habe folgendes Problem: Ich möchte das zweite char aus einem String 
auslesen und in ein Int umwandeln und dies habe ich folgendermaßen in 
Code umgesetzt: (Auszug)
1
extern char usart_buffer[usart_buffer_lenght];
2

3
int controll_word;
4
char *change_char;
5

6
*change_char = usart_buffer[2];
7
controll_word = atoi(change_char);
Wenn ich das so mache kommt folgende Warnung:

../action.c:56: warning: 'change_char' is used uninitialized in this 
function

Mir gefällt meine Vorgehensweise nicht richtig, hat vieleicht jemand 
eine bessere Idee wie man das lösen kann?

Der Hintergrund ist folgender. Die ersten beiden Zeichen in dem 
usart_buffer ist ein Steuerzeichen und das nächste Zeichen also 
usart_buffer[2] ist die "Anweisung".

vielen dank im vorraus

Chris
Gast
Chris wrote:
> ../action.c:56: warning: 'change_char' is used uninitialized in this
> function
Da hatter vollkommen Recht... du machst zwar "*" mit dem Zeiger, aber 
der zeigt ja noch in die Wildnis...

Stichworte:
- malloc, free,
- statische Arrays.
Gast
So geht es ja mal wohl nicht atoi kann nur Strings umwandeln und weder 
change_char noch ein Element aus dem String erfüllen diese Eigenschaft.
1
char c[2];
2
  
3

4
c[0]=usart_buffer[2];
5
c[1]='\0';
6

7
controll_word = atoi(c);
Gast
Wenn ich
1
controll_word = atoi(usart_buffer[2]);
nutze kommt dieser Fehler:

../action.c:57: warning: passing argument 1 of 'atoi' makes pointer from 
integer without a cast

ich denke versuche mal svens weg,bin aber nicht sicher wie das geht kenn 
das nur mit new und delet aus c++.
>Wenn ich

>controll_word = atoi(usart_buffer[2]);


>nutze kommt dieser Fehler:

>../action.c:57: warning: passing argument 1 of 'atoi' makes pointer from
>integer without a cast

Da meckert er auch zu recht.


controll_word = atoi(&usart_buffer[2]);

So sollte er nicht mehr meckern.

Wenn aber nur das zweite Zeichen gemeint ist kannst du auch schreiben:

controll_word = (int)(usart_buffer[2] - '0')

Gruss Helmi

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.