C-ben console-ból olvasás probléma

Címkék
C-ben console-ból olvasás probléma
2018-11-03T18:28:41+01:00
2018-11-03T21:19:46+01:00
2022-10-15T21:36:45+02:00
kisszil
Helló!
C-ben csinálok egy kisebb programot, de sajnos elakadtam, ugyanis mikor olvasok be console-ból, nem tudok az első változóba beolvasni:

#include <stdio.h> #include <stdlib.h> #include <string.h> char * getnewline(void) { char * line = malloc(80), * linep = line; size_t lenmax = 80, len = lenmax; int c; if(line == NULL) return NULL; for(;;) { c = fgetc(stdin); if(c == EOF) break; if(--len == 0) { len = lenmax; char * linen = realloc(linep, lenmax *= 2); if(linen == NULL) { free(linep); return NULL; } line = linen + (line - linep); linep = linen; } if((*line++ = c) == '\n') break; } *line = '\0'; return linep; } int main(){ while(1){ int c; printf("i: input\nm: modify\nc: clear data\nl: list datas\nx: exit\nPlease give a statement: "); c= getchar( ); switch(c) { case 'i': printf("input\n"); char* name = (char*)malloc(80*sizeof(char)); char* phone = (char*)malloc(80*sizeof(char)); char* email = (char*)malloc(80*sizeof(char)); char* order = (char*)malloc(80*sizeof(char)); printf("Name: "); strcpy(name, getnewline( ) ); printf("Email address: "); strcpy(email, getnewline( ) ); printf("Phone number: "); strcpy(phone, getnewline( ) ); printf("Order: "); strcpy(order, getnewline( ) ); printf("%s\n%s\n%s\n%s\n", name, email, phone, order); break; case 'm': printf("modify\n"); break; case 'c': printf("clear data\n"); break; case 'l': printf("list datas\n"); break; case 'x': exit(0); default : printf("Wrong statement\n"); break; } } return 0; }
Output:
Mutasd a teljes hozzászólást!
Csatolt állomány
A menuparancs beolvasásánál is legyen getnewline a getchar helyett. Így sem lesz éppen hibátlan, de valamennyire működni fog.
Mutasd a teljes hozzászólást!

Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd