You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言反转单个单词并存储结果供printf调用的实现疑问

实现思路及修正方案

你当前的代码只实现了逆序打印字符,没有将反转结果持久化存储到内存中,同时printf语句存在格式符使用错误:%c仅用于输出单个字符,输出完整字符串需要使用%s格式符。

提供两种常用实现方案:

方案1:原地反转原字符串(会修改原有myString的内容)

通过双指针交换首尾字符实现反转,不需要额外申请存储空间:

int start = 0;
int end = strlen(myString) - 1;
char temp;
// 首尾指针相遇时停止交换
while (start < end) {
    temp = myString[start];
    myString[start] = myString[end];
    myString[end] = temp;
    start++;
    end--;
}
// 修正格式符为%s
printf("The word reversed is '%s'", myString);

注意:该方案仅适用于myString是可修改的字符数组的场景,如果myString是指向字符串常量的指针(如char *myString = "test"),原地修改会触发内存访问错误,需使用方案2。

方案2:反转结果存储到新缓冲区(不修改原字符串)

申请新的字符数组存储反转后的内容,保留原有字符串不变:

int len = strlen(myString);
// 数组长度+1用于存放字符串结束符\0
char reversed_str[len + 1];
for (int i = 0; i < len; i++) {
    reversed_str[i] = myString[len - 1 - i];
}
// 必须手动补充字符串结束符,否则会输出乱码
reversed_str[len] = '\0';
printf("The word reversed is '%s'", reversed_str);

内容的提问来源于stack exchange,提问作者user16003119

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:18:03