-1
CS50x 클래스를하고 있고 결함이 있습니다. 나는 그들에게 무슨 일이 일어나고 있는지 그리고 아무도 무슨 일이 일어나고 있는지 알지 못했습니다.Islower function glitch
소문자 f를 인쇄하려고 할 때마다 항상?로 표시됩니다. 인수로 23을 시도하고 abcdefghijklmnopqrstuvwxyz
을 입력으로 시도하십시오. 엉망이 됐어. 여기에 코드입니다 :
#include <stdio.h>
#include <stdlib.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
int main (int argc, string argv[]){
if(argc !=2){
return 1;
}
string x = GetString();
int key = atoi(argv[1]);
for(int a = 0, n = strlen(x); a < n; a++){
char i = key + x[a];
if(islower(x[a])){
if(i > 122){
i = (i-122) + 96;
}
}
if(isupper(x[a])){
if(i > 90){
i = (i-90) + 64;
}
}
printf("%c", i);
}
printf("\n");
return 0;
}
op가'int'를 인자로 취하는'printf()'의 '% c'변환 지정자를 사용하여 OP가'i'를 출력하기 때문에'char'로 다시 변환 할 필요가 없습니다. 'i'의 타입을'int'로 바꾸기 만하면됩니다. – caf