Scanf Hilfe

mitch_byu_kennen

Erfahrenes Mitglied
hallo,

hier ich das ist mein programm wo ich versuche was einzulesen, um genau zu sein strings dafür verwende ich scanf("%'\n'",name)
Code:
 #include <stdio.h>
#include <conio.h>

int main (void)
{
	int i=0;
	char adresse[20]={0};
	clrscr();
	printf("\n\n\nBitte geben Sie ihre Adresse ein: ");
	scanf("%'\n'",adresse);
	fflush(stdin);
	printf("\n\n\nIhre Adresse ist: %s\n",adresse);
	for(i=0;i<20;i++)
	{
		printf("Schau hier: %c\n",adresse[i]);
		if(adresse[i]==0)
		{
			break;
		}
	}
	getchar();
	return 0;

}

mit dem "\n" bei scanf versuche ich den string bis zu einem Zeilenumbruch einzulesen!

mfg mitch
 
Versuchs mal mit
Code:
fgets(adresse, 20, stdin);

Zur Erklärung: fgets liest in diesem Beispiel max. 19(!) Zeichen von der Standardeingabe oder bis ein Zeilenende bzw. EOF gelesen wurde und
schreibt die Zeichen in den Puffer "adresse". Außerdem wird ein \0 als
Abschluß des Strings eingefügt.

--
dt
 
scanf ist immer etwas problematisch. Allerdings, so, wie Du es verwendet hast, kann es glaube ich nicht gehen.
Mit scanf("%s", adresse) liest Du das erste Wort der Eingabe aus, also bis zum ersten Whitespace. Du kannst allerdings auch in eckigen Klammern die Zeichen angeben, die in den String gehören, z.B. scanf("%[a-zA-Z0-9]", adresse) liest ein, bis das erste nicht-alphanumerische Zeichen auftaucht. Mit scanf("%[^\n]", adresse) sollte es lesen, bis ein '\n' kommt.
 
jokey2 hat gesagt.:
Mit scanf("%[^\n]", adresse) sollte es lesen, bis ein '\n' kommt.

Hierbei sollte man aber wieder aufpassen, das der Puffer groß genug ist um auch alle Zeichen aufzunehmen. In diesem Fall sollten max. 19 Zeichen eingegeben werden.

Es wäre dann besser die max. Anzahl der zu lesenden Zeichen als Feldbreite im Formatstring anzugeben (oder gleich fgets zu verwenden ;-)):

scanf("%19[^\n]", adresse);

--
dt
 
hallo

Bin zwar noch der C Anfänger.. aber sollte man nicht noch ein & Zeichen im scanf Befehl verwenden

scanf("%'\n'",&adresse);

oder ist das nicht dein problem? :-(

gruss D@rk
 
adresse ist ein Array, d.h. es wird der Zeiger auf das erste Element übergeben. Also kein &.
 
moin


Also:
- Um einen String einzulesen musst du %s benutzen!
- In einem konstanten String "....." musst du \n nicht in Hochkommas setzen!

Außefrdem hat jokey2 recht!


mfg
umbrasaxum
 
Zurück