005
16.01.2004, 16:22 Uhr
virtual
Sexiest Bit alive (Operator)
|
Nimm fgets an stelle von scanf (ist sicherer wg bufferoverflow), du musst dann allerding noch das '\n' am Ende der Eingabe entfernen. Wenn es unbedingt scanf sein soll, hilft manchmal auch
C++: |
scanf("%[^\n]s", ...);
|
Allerding bleibt in diesem fall das '\n' im Stream und du mußt es ebenfalls per hand rauslesen:
fgets Lösung:
C++: |
#include <stdio.h>
int main() { char buffer[100]; size_t len;
fgets(buffer, sizeof(buffer), stdin); if (buffer[len=strlen(buffer)-1]=='\n') buffer[len] = 0; printf(">%s<\n", buffer); fgets(buffer, sizeof(buffer), stdin); if (buffer[len=strlen(buffer)-1]=='\n') buffer[len] = 0; printf(">%s<\n", buffer); }
|
scanf lösung:
C++: |
#include <stdio.h>
int main() { char buffer[100]; scanf("%[^\n]s", buffer); printf(">%s<\n", buffer); getc(stdin); /* '\n' überspringen */ scanf("%[^\n]s", buffer); printf(">%s<\n", buffer); getc(stdin); /* '\n' überspringen */ }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |