Wie kann ich Lesen, Tastatur-Eingabe-Zeichenfolgen? (C++)
getc (stdin) liest die Tastatur-Eingaben zu zahlen, aber was ist, wenn ich Lesen will Tastatur-Eingabe-Zeichenfolgen?
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
void CharReadWrite(FILE *fin);
FILE *fptr2;
int _tmain(int argc, _TCHAR* argv[])
{
char alpha= getc(stdin);
char filename=alpha;
if (fopen_s( &fptr2, filename, "r" ) != 0 )
printf( "File stream %s was not opened\n", filename );
else
printf( "The file %s was opened\n", filename );
CharReadWrite(fptr2);
fclose(fptr2);
return 0;
}
void CharReadWrite(FILE *fin){
int c;
while ((c=fgetc(fin)) !=EOF) {
putchar(c);}
}
- First off, können Sie den gesamten code in code-form? Auch getc ist wieder ein einzelnes Zeichen (Ganzzahl um genau zu sein) also, wenn Sie einen Pfad eingeben, enter drücken, mit dem Namen bestehen wird, wird nur das erste Zeichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weiter mit dem Thema getc, die Sie verwenden können
fgets
zum Lesen einer Zeile der Eingabe in ein Zeichen-Puffer.E. g.
Beachten Sie, dass ryansstack s Antwort ist eine viel bessere, einfachere und sicherere Lösung gegeben, Sie sind mit C++.
http://www.cplusplus.com/reference/iostream/istream/getline/
Ta da!
Einem Zeichen (ASCII) ist nur eine vorzeichenlose 8-bit-integral-Wert, dh. es kann einen Wert zwischen 0 und 255. Wenn Sie einen Blick auf eine ASCII-Tabelle können Sie sehen, wie die integer-Werte anzeigen zu Zeichen. Aber im Allgemeinen, Sie können nur springen zwischen den Arten, dh:
Edit: Wenn Sie auf mit getc zu Lesen in den Namen der Datei, können Sie das folgende tun:
Dies ist ein ziemlich niedrigen Niveau der Lektüre Charakter Eingänge, die andere Antworten geben höhere Ebene/sicherere Methoden, aber wieder, wenn Sie sind auf getc...
int
für einen Grund.EOF
wird nicht in der Regel passen in einenchar
.Da Sie bereits zu mischen "C" - code mit "C++" durch die Verwendung von printf, warum Sie nicht weiter und verwenden Sie scanf
scanf("%s", &mystring);
um zu Lesen, und formatieren Sie es alle schön ?Oder natürlich was schon gesagt wurde.. getline