Forum: Projekte & Code Strings vergleichen=> C-Frage


von Timo (Gast)


Lesenswert?

Hi,

ich habe folgendes programmiert. Im Visual Studio klappt es so wie ich
mir das vorstelle. Aber im CodeVision kommt immer Folgender Fehler:
function parameter #1 incompatible with its declaration. ??

char Zeichen[20];

if ( (strcmp("ABC",Zeichen)) == 0 )

Hat jemand eine Idee?

Danke,
Timo

von marcel (Gast)


Lesenswert?

hi,

initialisierst du "Zeichen" in deinem Prog?

______________________________
int main(void)
{
 char s[6] = "hallo";

  if (strcmp(s,"hallo")==0)
  {
    printf("Hallo");
  }
 return 0;
}

von Timo (Gast)


Lesenswert?

Hi,

also ich fülle Zeichen[20] mit Zeichen aus dem UART.

interrupt [UART_RXC] void uart_rx_isr(void)
{
  Zeichen[i] = UDR;
  i++;

  if ( UDR == 0x0A )
  {
  i=i-2;
  Zeichen[i]=0x00;
  NeueDaten = 1;
  i=0;
  }
}

von Jürgen (Gast)


Lesenswert?

Ich nehme an, dass vom UART kein Stringabschluss als letztes Zichen
kommt, dies wird aber von strcmp benötigt. Deshalb müsstest Du hinter
dem letzten zeichen vom UART noch ei \0 anhängen.

von Matthias (Gast)


Lesenswert?

Hi

ich vermute eher das der Compiler "ABC" als Konstante im ROM ablegt.
Und das passt nicht zur Deklaration von strcmp() aus der Bibliothek.

Matthias

von Helge (Gast)


Lesenswert?

Hallo
Versuch es mal so. Codevision dürfte dann nicht mehr meckern.

char abc[]="ABC";
char Zeichen[20];
if ( (strcmp("abc",Zeichen)) == 0 )

Ob die Zeichenkette als gleich erkannt wird, wenn über die UART ABC
empfangen wird weiß ich nicht. Wie Jürgen schon schreibt,ist so ein
Problem mit der /0

von Timo (Gast)


Lesenswert?

Soo,

nun gehts. Er will den String nicht direkt gepostet haben. Wenn ich ein
Char Array mache und das mit z.B. ABC initalisiere klappt es.

char cText[20]="ABC"

Danke an alle.

Timo

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.