www.mikrocontroller.net

Forum: Compiler & IDEs Fehlermeldung


Autor: Balazs Jancso (balazs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

anbei ein Programmsegment:
void InputStr(char *buffer, unsigned short maxlen, int x, int y)
{
  short key;
  unsigned short i = 0;
  unsigned short j = 0;

  buffer[0] = 0;
  char lis[8];
  char *num;
  char num1[8];
  unsigned short anz;
  unsigned short anz1;
//  float zahl;
  for(j =0;j<8;j++)
     lis[j] = 0;
     num1[j] = 0;


  do
    {

      MoveTo (x+50,y);
      printf ("%s_  ", buffer);
        // Note that two spaces are required only if the F_4x6 font is 
used
      key = ngetchx ();
      if (key >= ' ' && key <= '~' && i < maxlen)
        buffer[i++] = key;
      else if (key == KEY_BACKSPACE && i)
        i--;
      buffer[i] = 0;
     } while (key != KEY_ENTER);

        num = strpbrk(buffer,"=");
        anz = strlen(buffer)-strlen(num);
        anz1 = strlen(buffer)-strlen(num+1);

          strncpy(lis,buffer,anz);

          for (j=anz1;j<=strlen(buffer);j++)
          strncpy(num1,buffer[j],1);

es funktioniert bis zur letzten Zeile, jedoch die letzte Zeile!!
Ich bekomme die Fehlermeldung:

Passing argument 2 of '*(*200u + 2484u)' makes pointer from integer 
without a cast.
Was ist hier falsch??

Kann mir jemand helfen, und danke im voraus

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>          strncpy(num1,buffer[j],1);


buffer[j] gibt den Inhalt des j.Elements von buffer an, aber nicht 
seine Adresse!

Es müßte richtig heißen:
          strncpy(num1, buffer + j, 1);


Egal, ob das Ganze sinnvoll ist oder nicht.

Bernhard

Autor: balazs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist mir auch klar, ich wollte lediglich von einem string (z.B "=123") 
nur den Zahlteil haben, also nur "123", hatte aber keinen anderen Befehl 
zur Verfügung. Jedenfalls vielen Dank für Deine Antwort, Gruss Balazs 
(weiss allerdings immer noch nicht wie man so macht)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.