0

ここで何が問題なのですか?

char配列のcharがlowerかどうかを確認したいので、そうであれば大文字に変更する必要があります。

#include <stdio.h>

int main(int argc, char *argv[]) {
    char arr[100];
    scanf("%s",&arr);
    for(int i=0;i<sizeof(arr);i++){
        if(int islower(arr[i])){
            arr[i] = toupper(arr[i]);
        }
    }
    printf("%s",arr);
    return 0;
}
4

4 に答える 4

5

文字列の長さを正しく測定するにはstrlen、 ではなくを使用しますsizeof

for(int i=0;i<strlen(arr);i++){ // Don't use sizeof on this line

より簡単なバージョンは次のとおりです。

#include <stdio.h>
#include <ctype.h>

int main(int argc, char *argv[]) {
    char arr[100];
    scanf("%s", arr);

    for(int i=0;i<strlen(arr);i++){
        arr[i] = toupper(arr[i]);
    }

    printf("%s",arr);
    return 0;
}

あるいは:

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char arr[100];
    scanf("%s", arr);

    for(char* c=arr; *c=toupper(*c); ++c) ;

    printf("%s",arr);
    return 0;
}
于 2016-03-03T18:03:43.970 に答える
2

インクルードがありません#include <ctype.h>

また、あなたの if声明は必要ありません。toupper内部でそれを処理します(本当に維持したい場合は、ステートメントで をislower削除しintてください)。if

于 2016-03-03T17:27:28.737 に答える
1

islowerとを宣言するヘッダーを追加しtoupperます。

#include <ctype.h>

さらに、

    if(int islower(arr[i])){

正しくありません。を取り外しますint

    if(islower(arr[i])){
于 2016-03-03T17:26:44.890 に答える