不对
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。为啥代码不能让字符逆转
#include <stdio.h>
#include<string.h>
int main() {
char str;
gets(str);
int len = strlen(str);
for (int i = 0; i < len; i++) {
char temp = str;
str = str;
str = temp;
}
printf("%s", str);
return 0;
}
你的代码存在一些问题。我来给你解释一下并提供正确的代码。
首先,你定义的字符变量str应该是一个字符串数组,而不是单个字符。所以要修改为`char str;`,这样就可以存储最大长度为100(加上末尾的'\0')的字符串了。
其次,你使用的是`gets`函数来读取字符串,但是这个函数已经被废弃了,因为它不安全。你可以使用`fgets`函数来读取字符串,并指定最大读取的字符数为`100`,这样就不会超出数组的范围了。
然后,你在颠倒字符串的循环中,交换字符的代码有问题。你需要交换的是`str`和`str`,而不是`str`本身。可以使用一个临时变量来完成交换操作。
最后,你在打印字符串的时候,应该使用`puts`函数而不是`printf`函数。因为`puts`会自动在末尾添加换行符。
下面是修改后的代码:
#include <stdio.h>
#include <string.h>
int main() {
char str;
fgets(str, 100, stdin);
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = str;
str = str;
str = temp;
}
puts(str);
return 0;
}
现在你可以输入一个字符串,然后代码会将其倒序输出。希望对你有帮助!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 #include <stdio.h>
#include <string.h>
int main()
{
char a,temp;
int i;
fgets(a,101,stdin);
int n=strlen(a);
for(i=0;i<n/2;i++)
{
temp=a;
a=a;
a=temp;
}
puts(a);
return 0;
}
为什么运行崩溃 mamaaini 发表于 2023-11-26 11:37
#include
#include
int main()
{
char a,te ...
你的代码中有一些问题。我来给你解释一下并提供正确的代码。
首先,你定义的字符变量 `a` 应该是一个字符串数组,而不是单个字符。所以要修改为 `char a;`,这样就可以存储长度为100的字符串了。同时,在使用 `fgets` 函数时,应该指定读取的字符数为 101,以防止溢出。
然后,你在循环中的交换操作不正确。正确的交换操作应该是通过使用临时变量来交换两个字符的值。
具体来说,你需要交换 `a` 和 `a` 位置上的字符。
最后,你在打印字符串时,可以使用 `puts` 函数来输出字符串,并自动添加换行符。需要注意的是,`fgets` 函数会将输入的换行符也读入到字符串中,所以在输出时可能会出现多余的换行符。可以使用 `strtok` 函数去除换行符。
下面是修改后的代码:
#include <stdio.h>
#include <string.h>
int main() {
char a, temp;
int i;
fgets(a, 101, stdin);
int n = strlen(a);
// 去除换行符
strtok(a, "\n");
for (i = 0; i < n / 2; i++) {
temp = a;
a = a;
a = temp;
}
puts(a);
return 0;
}
现在你可以输入一个字符串,然后代码会将其颠倒输出。希望对你有帮助!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
无语了 歌者文明清理员 发表于 2023-11-26 11:45
无语了
就是看不懂这位同学在做什么
页:
[1]