int main ( )
{
char ch
scanf("%c",&ch)
ch=(ch>='a'&& ch<='z') ? (ch-32):ch
printf("%c\n",ch)
}
只需要修改ch=(ch>='a'&&ch<='z') ? (ch-32):ch这一行就行,这是一个三元表达式,等同于:
if (ch>='a'&&ch<='z')
ch = ch - 32
ch>='a'&&ch<='z' 这个是小写字母的取值范围,如果是小写字母,则变换成大写字母,大写字母和小写字母ASCII码正好差32,所以减32就可以变成大写字母.
你这样malloc里面没有写分配内存的类型,但是看你这里是char,所以可以这样写printf("%d",sizeof(char)*(strlen(b)+1))
sizeof(char)是类型的字节,然后乘上你分配的大小
但是如果里面的a是int型的话就不能这样了,因为一个int占4个字节,那么你分配的字节个数是(strlen(b)+1)/4个元素,其实malloc分配的字节就是malloc里面的参数