Forum: Compiler & IDEs Frage zu strncat()


von Hiro (Gast)


Lesenswert?

Hallo


Ich will die Funktion strncat verwenden um einen String an das Ende 
eines weiteren Strings dranzuhängen.

Wenn ich die Funktion so verwende:
1
  char package_source[25];
2
  char package_minutes[3];
3
  char package_seconds[3];
4
  ...
5
  //Nur Testwerte
6
  U_INT8 minutes = 30;
7
  U_INT8 seconds = 54;   
8
9
  //Convert the integer values to ASCII code
10
  itoa(minutes  ,package_minutes ,10);
11
  itoa(seconds  ,package_seconds ,10);
12
13
  //Copy the parts of the package to the end of the source package
14
  strncat(package_source,3,package_minutes );
15
  strncat(package_source,3,package_seconds );

...dann bekomme ich jedesmal wenn ich strncat() verwende die Warnung:

------------------------------
warning: passing argument 2 of 'strncat' makes pointer from integer 
without a cast
------------------------------


Was hat es damit auf sich? Argument 2 von strcat() ist doch bloß die 
Anzahl der Zeichen, die kopiert werden sollen. Was soll ich da casten?

von Walter (Gast)


Lesenswert?

kommt die Zahl der Zeichen nicht als 3. Argument??
bei strncmp isses z.B. so

von Johannes M. (johnny-m)


Lesenswert?

Schau Dir doch einfach mal in der lib-Dokumentation an, welche Parameter 
mit welchen Typen die Funktion haben möchte. Der zweite Parameter ist 
z.B. vom Typ "const char*", also ein Zeiger auf einen (konstanten) 
char . Die Zahl 3 ist aber kein Zeiger auf const char  sondern 
einfach nur eine (ganze) Zahl.

von Johannes M. (johnny-m)


Lesenswert?

Walter wrote:
> kommt die Zahl der Zeichen nicht als 3. Argument??
Richtig. Die Stringlänge ist das dritte Argument und nicht das zweite. 
Aber auch das kann ein Blick in die lib-Dokumentation schnell klären...

von Hiro (Gast)


Lesenswert?

Vielen Dank für die Antwort!

Ihr habt recht, ich bin noch recht neu in C und mir kam das gar nicht in 
den Sinn einfach die Lib anzuschauen ;-)

Danke!

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.