私のプログラムは入力からスキャンし、使用されているすべての大文字を出力します。
私のプログラムの最後にも標準入力からの元の入力を印刷しようとしています。
しかし、printf を使用すると、入力式の最初の部分がスキップされ、文字配列の残りの部分が出力されるようです。問題がどこにあるのかを教えてください。-コード内のコメント-
#include <stdio.h>
int main(void){
char input[81];
int letters[91];
int i;
//initialize arrays input and letters
for (i = 0; i < 90; i++) letters[i] = 2;
for (i = 0 ; i < 80; i++) input[i] = 'a';
i = 0;
//reads into input array until EOF
while((scanf("%c",input)!= EOF)){
//checks input for characters A-Z
if((input[i]>= 'A' && input[i]<= 'Z'))
letters[input[i]] = 1;
}
//prints capital letters from input that occur at least once
for(i = 'A'; i < 'Z'; i++){
if (letters[i]==1)
printf("%c", i);} // this output works fine, the scan worked??
//print blank line
printf("\n\n");
// print input
printf("%s\n", input); //This is where the incorrect output comes from.
return 0;}
元の入力は変更されますか? なぜ?そもそも私の入力が正しくスキャンされなかったのですか? 迅速に対応してください!