linux-l: GCC Frage

Volker Mueller volker.mueller at gmx.de
Fr Mär 5 15:25:11 CET 1999


On Fri, 5 Mar 1999, Netbandit at Infoship wrote:

>1.) in meinem Buch steht, wenn ich einem String (oder char array) zuweisen will
>kann ich es so z.B. machen:
>
>char text[80];
>text = "Hallo Welt!";

Wie Du oben schon schreibst, legst Du mit
char text[80];
ein Array an, auf das der Zeiger "&text[0]" oder die Kurzform mit identischer
Bedeutung "text" zeigt. Einem Zeiger kannst Du aber keine Zeichenkette zu-
ordnen. Dafuer gibz die Fkt. strcpy (3) (bzw. strncpy (3)). Die korrekte
Loesung findest Du am Ende dieser Mail.

>2.) ich möchte über scanf ein String einlesen:
>
>char text[80];
>printf("Bitte Satz eingeben: ");
>scanf("%80s",text);
>printf(text);

scanf("%s", text); tut genau das, was Du ihm sagst: Es liest eine Zeichen-
kette ein. Das Leerzeichen ist ein Trennzeichen, es wird also als weitere
Zeichenkette interpretiert, die von Deinem Programm allerdings nicht weiter
verwendet wird. In diesem Fall muesstest Du beispielsweise die in der
Zeichenkette zugelassenen Zeichen explizit angeben. Auch dafuer ein Beispiel
am Ende dieser Mail. Alternativ gibt es z.B. noch gets/puts ...

>OK, ich hoffe, ihr könnt helfen!

Ich hoffe, mich einigermassen verstaendlich ausgedrueckt zu haben.


>Netbandit

Du hast aber einen komischen Namen :-(

Tschau, Volker

--- Beispiel ---
#include <stdio.h>

void main(void)
{
  char text[80];
  strcpy(text, "Hallo Welt\n");
  printf("%s", text);

  printf("\nBitte Satz eingeben:\n");
  scanf("%[a-zA-Z0-9 ]", text);
  /*       ^^^^^^^^^^ zulaessige Zeichen (incl. Leerzeichen!) */
  printf("%s\n", text);
}
---


-- 
Volker Mueller,volker.mueller at gmx.de,http://www.in-berlin.de/user/flinux
CPU  idle?  Kein Problem  -  wir wissen Rat:  http://www.distributed.net



Mehr Informationen über die Mailingliste linux-l