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
相关产品推荐
相关产品推荐

