scanf() musst Du die Adresse eines Arrays übergeben, wo der String reingeschrieben wird. Da der Arrayname schon ein Zeiger ist, kannst Du das & bei den Zeichenketten weglassen.
In Deiner Struktur sind Zeiger für Name und Passwort.
Die Zeiger zeigen aber an eine mehr oder weniger zufällige Stelle im Speicher, Du müsstest mit malloc() Speicher dafür anfordern oder folgendes machen:
typedef struct{
char name[100];
char password[100];
int status;
} Account;
Ist natürlich nicht perfekt, denn was passiert wohl bei mehr als 99 eingegebenen Buchstaben? ;-)
Aber für Info1 sollte es so ok sein, solange Dir klar ist, was passieren kann.
Hier mal überarbeitet mit malloc() und free():
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
#define NUTZER 10
#define LAENGE 100
typedef struct{
char* name;
char* password;
int status;
} Account;
int main(int argc, char* argv[]) {
int j, i=0;
Account Data[NUTZER];
do
{
Data[i].name = (char*) malloc(LAENGE * sizeof(char));
/* wir gehen davon aus, dass malloc erfolgreich ist, prüfen also nicht auf NULL als Rückgabe */
printf("Name:");
scanf("%s",Data[i].name);
fflush(stdin);
Data[i].password = (char*) malloc(LAENGE * sizeof(char));
printf("Password:");
scanf("%s",Data[i].password);
fflush(stdin);
printf("Status:");
scanf("%d",&Data[i].status);
fflush(stdin);
i++;
} while (i<NUTZER && Data[i-1].status!=(-1));
for (j=0;j<i;j++)
{
printf("\nACCOUNT:\n Name:%s\nPassword:%s\nStatus:%d\n",Data[j].name, Data[j].password, Data[j].status);
free(Data[j].name);
free(Data[j].password);
}
return 0;
}