gpt4 book ai didi

c - Toupper 不适用于 char 数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:10:52 24 4
gpt4 key购买 nike

感谢您的关注...我真的很困惑..为什么当我给 char 一个数组时我不能使用 toupper 将 char 类型转换为大写...就像这样“char drh[1]”?

这是我的代码..这段代码还没有完成..我卡在了中间。

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

using namespace std;
int main()
{
char nama[50], gender[6], drh[1];
int tahun_l, usia;
float berat, tinggi, berat_i;

printf("Masukkan Data Anda\n\n");
// INPUT ZONE

//First
printf("Nama\t\t\t\t: ");
scanf("%[^\n]", &nama);

printf("Tahun Lahir (yyyy)\t\t: ");
scanf("%d", &tahun_l);

printf("Gol Darah (A/B/C)\t\t: ");
scanf("%s", &drh);

system("cls");

//Second
printf("Masukkan Data Anda\n\n");

printf("Nama\t\t\t\t: %s\n", nama);
fflush(stdin);

printf("Tahun Lahir (yyyy)\t\t: %d\n", tahun_l);
fflush(stdin);

printf("Gol Darah (A/B/O)\t\t: %s\n", drh);
drh = toupper(drh); //not working
fflush(stdin);

printf("Jenis Kelamin (Pria/Wanita)\t: ");
scanf("%s", &gender);

printf("Berat Badan (kg)\t\t: ");
scanf("%f", &berat);

printf("Tinggi Badan (cm)\t\t: ");
scanf("%f", &tinggi);

//FORMULA ZONE
usia = 2008 - tahun_l;
berat_i = tinggi - 100 - (0.1 * (tinggi - 100));
//OUTPUT ZONE
printf("\n%s, berdasarkan data yang Anda masukkan,\n", nama);
printf("Anda berjenis kelamin %s, saat ini Anda berusia %d tahun,\n", gender, usia);
printf("Berat badan = %.2f kg, tinggi badan = %.2f cm, golongan darah = %s \n", berat, tinggi, drh);
printf("\nBerat badan ideal adalah %.2f", berat_i);

getche();
return 0;
}

最佳答案

toupper 函数作用于单个字符,而不作用于字符串。如果需要将整个字符串转为大写,需要使用循环:

for (char *p = drh ; *p ; *p = toupper(*p), p++)
;

但是,您的 drh 缓冲区没有足够的长度:它必须有 2 个字符以适应空终止符:

char nama[50], gender[6], drh[2];
// Add 1 char for terminator ^---- HERE

此外,由于您知道 drh 是单个字符,您可以使用

*drh = toupper(*drh);

关于c - Toupper 不适用于 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12658249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com