sn4fu
09-10-2001, 15:45
hi, ich hab vor ein paar tagen angefangen, mich mit c zu beschäftigen, und hab inzwischen ein prob, das ich nicht durchschaue:
ich will das der user einen text eingibt, der in der variablen txt gespeichert wird und diese dann ausgegeben wird.
hier der source von dem programm:
---
#include <stdio.h>
void main()
{
char txt[11];
/* data input */
printf("enter text: ");
scanf("%10s",&txt);
/* data output */
printf("text: %s\n",txt);
}
---
so funktioniert das programm einwandfrei, der text wird eingelesen und dann auf dem screen ausgegeben.
allerdings hätte ich gerne, das dazu noch eine zahl eingelesen wird.
also sieht der source dann so aus:
---
#include <stdio.h>
void main()
{
char txt[11];
short x;
/* data input */
printf("enter text: ");
scanf("%10s",&txt);
printf("enter short number: ");
scanf("%d",&x);
/* data output */
printf("text: %s\n",txt);
}
---
nun wird jedoch nicht mehr der inhalt von txt ausgegeben, sondern nur noch
"text:"
nur versteh ich nicht, wieso das nicht mehr passiert.
und ne kleine verständnisfrage obendrein:
wenn ich in zeile 10 statt "scanf("%10s",&txt);" nur "scanf("%s",txt);" schreibe, dann kann ich für txt werte bis zur länge 15 eingeben, die dann auch korrekt ausgegeben werden. ab einer länge von 16 zeichen für txt bekomm ich dann erst die fehlermeldung "Ungültiger Maschinenbefehl". dabei dachte ich, durch "char txt[11];" hab ich für txt nur 11 zeichen im speicher reserviert. demnach hätte ich also schon ab 11 eingegeben zeichen doch die fehlermeldung bekommen müssen, oder?
ich will das der user einen text eingibt, der in der variablen txt gespeichert wird und diese dann ausgegeben wird.
hier der source von dem programm:
---
#include <stdio.h>
void main()
{
char txt[11];
/* data input */
printf("enter text: ");
scanf("%10s",&txt);
/* data output */
printf("text: %s\n",txt);
}
---
so funktioniert das programm einwandfrei, der text wird eingelesen und dann auf dem screen ausgegeben.
allerdings hätte ich gerne, das dazu noch eine zahl eingelesen wird.
also sieht der source dann so aus:
---
#include <stdio.h>
void main()
{
char txt[11];
short x;
/* data input */
printf("enter text: ");
scanf("%10s",&txt);
printf("enter short number: ");
scanf("%d",&x);
/* data output */
printf("text: %s\n",txt);
}
---
nun wird jedoch nicht mehr der inhalt von txt ausgegeben, sondern nur noch
"text:"
nur versteh ich nicht, wieso das nicht mehr passiert.
und ne kleine verständnisfrage obendrein:
wenn ich in zeile 10 statt "scanf("%10s",&txt);" nur "scanf("%s",txt);" schreibe, dann kann ich für txt werte bis zur länge 15 eingeben, die dann auch korrekt ausgegeben werden. ab einer länge von 16 zeichen für txt bekomm ich dann erst die fehlermeldung "Ungültiger Maschinenbefehl". dabei dachte ich, durch "char txt[11];" hab ich für txt nur 11 zeichen im speicher reserviert. demnach hätte ich also schon ab 11 eingegeben zeichen doch die fehlermeldung bekommen müssen, oder?