Also im Grunde in dem Programm unter ich versuche, den Großbuchstaben eines Textes in Kleinbuchstaben und die Kleinbuchstaben in Großbuchstaben zu umwandeln und in einer Datei aus dem Ergebnis drucken ... aber das einzige, was ich nach dem Ausführen des Programms eine Folge von Zahlen ist ... ich habe versucht, als zweiten Parameter zu fprintf Funktion „% s“ zu setzen, aber ich habe nicht ein besseres Ergebnis bekommen ...in einer Datei c Schreiben
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
int charToLowerCase = 0;
int charToUpperCase = 0;
int countCharacters = 0;
FILE *in_file;
FILE *out_file;
in_file = fopen("input.txt", "r");
out_file = fopen("output.txt", "w");
c = fgetc(in_file);
while (c != EOF)
{
if (c >= 'A' && c <= 'Z')
{
fprintf(out_file, "%d", tolower(c));
charToLowerCase++;
}
else if (c >= 'a' && c <= 'z')
{
fprintf(out_file, "%d", toupper(c));
charToUpperCase++;
}
else
fprintf(out_file, "%d", c);
c = fgetc(in_file);
countCharacters++;
}
fclose(in_file);
fclose(out_file);
return 0;
}
Beste 'int c 'zu verwenden, nicht' char c' in diesem Fall. Es ist die Art von 'fgetc() zurück', 'tolower()' und 'toupper()' und die ihre positiven Werte sind diejenigen, die von 'tolower erwartet()' und 'toupper()'. – chux
Einverstanden. Und solange du dabei bist, [benutze auch 'isupper' und 'islower'] (http://pastebin.com/WM3mWeqH). Es gibt auch keinen Grund, den Vorschlaghammer zu benutzen, der 'fprintf' ist, wenn' fputc' ausreicht. – WhozCraig
'wenn (c> = 'A' && c <= 'Z')' nicht tragbar ist. [Buchstaben sind nicht garantiert sequentiell] (https://en.wikipedia.org/wiki/EBCDIC). Pro ** 5.2.1 Zeichensätze ** des [C Standard] (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf): * Die Werte der Mitglieder des Ausführungszeichensatzes sind implementierungsdefiniert. * Nur Ziffern sind garantiert sequentiell: * Sowohl in den grundlegenden als auch in den ausführenden Zeichensätzen ist der Wert jedes Zeichens nach '0' in der obigen Liste der Dezimalstellen Ziffern sind eins größer als der Wert des vorherigen. * –