求助
#include<stdio.h>#include<ctype.h>
char *str_toupper(char *s)
{
char *temp = s;
while(*s)
{
*s = toupper(*s++);
}
return temp;
}
char *str_tolower(char *s)
{
char *temp = s;
while(*s)
{
*s = tolower(*s++);
}
return temp;
}
int main()
{
char str;
printf("请输入字符串: ");
scanf("%s", str);
printf("大写字母: %s\n", str_toupper(str));
printf("小写字母: %s\n", str_tolower(str));
return 0;
}
请问位什么运行可以输入,没有输出呢 hpdie 发表于 2022-5-23 11:56
能问一下,我原来写的为什么不行吗?
*s = tolower(*s++);
这个代码怎么执行?
参考
副作用与顺序点:
https://fishc.com.cn/forum.php?mod=viewthread&tid=213521
https://blog.51cto.com/u_9634496/5223759
#include<stdio.h>
#include<ctype.h>
char *str_toupper(char *s)
{
char *temp = s;
while(*s)
{
//*s = toupper(*s++);
*s = toupper(*s);
++s;
}
return temp;
}
char *str_tolower(char *s)
{
char *temp = s;
while(*s)
{
//*s = tolower(*s++);
*s = tolower(*s);
++s;
}
return temp;
}
int main()
{
char str;
printf("请输入字符串: ");
scanf("%s", str);
printf("大写字母: %s\n", str_toupper(str));
printf("小写字母: %s\n", str_tolower(str));
return 0;
}
人造人 发表于 2022-5-23 11:50
能问一下,我原来写的为什么不行吗? 等于号右边的 s++ 会修改 s 的值
等于号左边使用的这个 s,应该是使用 修改之前的值还是修改之后的值?
人造人 发表于 2022-5-23 12:08
等于号右边的 s++ 会修改 s 的值
等于号左边使用的这个 s,应该是使用 修改之前的值还是修改之后的值?
谢谢
页:
[1]