-1
我正在做CS50x類,我被困在一個小故障。我問他們發生了什麼事,沒有人知道發生了什麼事。Islower函數故障
每當我嘗試打印小寫字母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使用'printf()'的'%c'轉換說明符輸出'i',所以'int'作爲參數就不需要轉換回'char'。簡單地將'i'的類型改爲'int'應該可以解決它。 – caf