Hallo. Ich soll ein kleines C Programm schreiben welches Zeichen über die Standardeingabe einliest und diese dann je nach Zeichen anders ausgiebt.
Die exakte Angabe lautet folgendermaßen:
Ich habe das Programm so gut wie fertig, aber noch ein kleines Problem. Bei der Option -v habe ich Probleme mit Zeichen >=127. Das Programm kommt dabei einfach nicht in die entsprechenden if.else Blöcke rein (Im Code sind das die letzten 3) und ich habe einfach keine Ahnung warum.
Falls jemand gerade Zeit und Lust hat sich mit dem Problem zu beschäftigen wäre ich für einen Tipp sehr dankbar.
Die exakte Angabe lautet folgendermaßen:
Wird keine Option angegeben, so soll die Eingabe auf die Ausgabe kopiert werden. Wird die
Option -E angegeben, so sollen Zeilenvorsch be (\n) durch die Zeihenfolge $\n ersetzt werden.
Wird die Option -T angegeben, so sollen Tabulatorzeichen (\t) durch die Zeichenfolge ^I ersetzt
werden. Wird die Option -v angegeben, so sollen alle Zeichen außer den zuvor genannten bei-
den folgendermaßen dargestellt werden: Die Zeichen 0 bis 31 werden durch ein Circumflex und
Zeichen + ?@? dargestellt. So wird z.B. 0 zu ^@, 1 zu ^A usw. Zeichen von 32 bis 126 werden
als ihre ASCII-Repr sentation dargestellt, das Zeichen 127 als ^?. Die Zeichen von 128 bis 255
werden als M- und der Darstellung von Zeichen − 128 dargestellt (wobei hier die Ausnahmen f ru
Zeilenvorschub und Tabulator nicht vorkommen). 138 wird zu M-^J, 139 zu M-^K usw. usf.
Anmerkung: Sie k nnen davon ausgehen, dass Ein- und Ausgabe im ASCII-Zeichensatz erfolgen.
Ich habe das Programm so gut wie fertig, aber noch ein kleines Problem. Bei der Option -v habe ich Probleme mit Zeichen >=127. Das Programm kommt dabei einfach nicht in die entsprechenden if.else Blöcke rein (Im Code sind das die letzten 3) und ich habe einfach keine Ahnung warum.
Falls jemand gerade Zeit und Lust hat sich mit dem Problem zu beschäftigen wäre ich für einen Tipp sehr dankbar.
Code:
while((c=fgetc(stdin))!=EOF){
inputStr[inputCount]=c;
inputCount++;
if(inputCount>5){break;}
}
for(i=0; i<=inputCount; i++){
if((int)inputStr[i]==10){
if(optionE){
outputStr[outputCount]='$';
outputCount++;
outputStr[outputCount]='/';
outputCount++;
outputStr[outputCount]='n';
outputCount++;
}
else{
outputStr[outputCount]=inputStr[i];
outputCount++;
}
}
else if((int)inputStr[i]==9){
if(optionT){
outputStr[outputCount]='^';
outputCount++;
outputStr[outputCount]='I';
outputCount++;
}
else{
outputStr[outputCount]=inputStr[i];
outputCount++;
}
}
else{
if(optionV){
if((int)inputStr[i]<=31){
input=inputStr[i];
outputStr[outputCount]='^';
outputCount++;
outputStr[outputCount]=(char)(input+64);
outputCount++;
}
else if((int)inputStr[i]<=126){
outputStr[outputCount]=inputStr[i];
outputCount++;
}
else if((int)inputStr[i]==127){
outputStr[outputCount]='^';
outputCount++;
outputStr[outputCount]='?';
outputCount++;
}
else if((int)inputStr[i]==127){
outputStr[outputCount]='^';
outputCount++;
outputStr[outputCount]='?';
outputCount++;
}
else if((int)inputStr[i]<=255){
input=inputStr[i];
outputStr[outputCount]='M';
outputCount++;
outputStr[outputCount]='-';
outputCount++;
outputStr[outputCount]=(char)(input-128);
}
else{
outputStr[outputCount]=inputStr[i];
outputCount++;
}
}
}
}
printf("ihre eingabe: " );
for(j=0; j<=outputCount;j++){
printf(" %c:%d ",outputStr[j],outputStr[j]);
}