c - 反向字符串(交换)
问题描述
我需要有关此考试的帮助。我需要反转输入字符串。
int main(void)
{
char str[30];
int strlen; int i=0; int count=0;int temp;int j;
printf("Enter the string \n");
gets(str);
while(str[i]!='\0')
{
i++;
count++;
}
strlen=count;
printf("The length of the string:%d\n", strlen);
i=0;
j=strlen;
while(i<j)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
i++;
j--;
}
printf("Reverse string :%s",str);
return 0;
}
问题是最后它没有向我显示字符串。它向我展示了:
"Reverse string :"
也就是说,没有反向字符串。我的错误在哪里?
解决方案
在你的代码中你正在做
j=strlen;
j 指向字符串的最后一个索引,即 '\0'
稍后在您设置的循环中str[i]=str[j];
因此,第一个索引将是\0
打印 str 将不显示任何内容
为了使代码正确设置j=strlen - 1;
推荐阅读
- r - 有什么方法可以用 R 提取 pdf 表格整齐吗?
- flutter - Flutter:相机在 image_picker 包上不断停止错误
- azure-cosmosdb - 如何通过命令行填充 CosmosDB 集合?
- python - pip install 时不要复制所有文件
- jquery - 在 Sharepoint Framework (Microsoft Teams) webpart 中使用 DevExtreme 控件
- javascript - setWindowSize() · WebdriverIO 自己添加 1px - 测试因此失败
- amazon-web-services - 忘记 AWS 组织成员账户 IAM 角色名称
- java - 使用Java8计算字符串列表中每个单词的频率
- redis - Redis Cluster 插槽信息过多
- php - 如何对 URI 中的 $search 变量的 GET 请求进行编码?