pointer Nutzung

Gast #1057687
Lesenswert?

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 #1057696
Lesenswert?

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 #1057707
Lesenswert?

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 #1057709
Lesenswert?

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++.
#1057739
Lesenswert?

>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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren