C++编写文本反转代码报错:提示Text和revText未声明,求错误排查
C++文本反转代码错误修复说明
核心错误点列表
- 变量重定义冲突:
main函数开头已将Text、revText定义为int类型,后续又重复定义为char数组,导致编译器识别异常 - 数组长度定义语法错误:
const int [arrSize] = 101;语法非法,正确写法为const int arrSize = 101; - 函数声明与定义不匹配:声明为
void reverse_Text(char* str);,实际定义却为双参数、int返回值的版本,参数类型也错误写成char而非char* - for循环语法错误:循环三个条件需用分号分隔,而非逗号,且函数内未提前声明变量j
- 字符串结束符错误:误将结束符写为
'0',正确的字符串结束符为'\0',且无需每次循环都赋值,循环结束后赋值一次即可 - 输入语句功能缺陷:
cin >> Text只能读取无空格的字符串,若要读取整行句子需用cin.getline
修正后可运行代码
原地反转版本(直接修改原字符串)
#include <iostream> #include <string.h> using namespace std; void reverse_Text(char* str); int main() { const int arrSize = 101; char Text[arrSize]; cout << "Please enter a sentence: "; cin.getline(Text, arrSize); reverse_Text(Text); cout << "The reversed text is " << Text << endl; return 0; } void reverse_Text(char* str) { int len = strlen(str); for(int i = 0; i < len / 2; i++){ char temp = str[i]; str[i] = str[len - 1 - i]; str[len - 1 - i] = temp; } }
保留原字符串版本(反转结果存入单独数组)
#include <iostream> #include <string.h> using namespace std; void reverse_Text(char* ori_str, char* rev_str); int main() { const int arrSize = 101; char Text[arrSize], revText[arrSize]; cout << "Please enter a sentence: "; cin.getline(Text, arrSize); reverse_Text(Text, revText); cout << "The original text is " << Text << endl; cout << "The reversed text is " << revText << endl; return 0; } void reverse_Text(char* ori_str, char* rev_str) { int len = strlen(ori_str); for(int i = 0; i < len; i++){ rev_str[i] = ori_str[len - 1 - i]; } rev_str[len] = '\0'; }
内容的提问来源于stack exchange,提问作者sariF_
相关产品推荐
相关产品推荐

