这个小程序我做错了什么。
我刚刚开始学习 c++,而且我可以接受这是一个没有实际意义的问题。我正在阅读 Prata c++ 入门书,它给了我一个代码示例,它采用 char 数组并在 for 循环中使用 strcmp(),该循环按顺序遍历以“?”开头的 ASCII 代码。直到一个测试字符变量 ==sa 从另一个字符设置值。
认为我可以超越这本书,我试图创建一个类似的程序,它采用一个 char 数组,使用 for 循环将采用一个测试 char 数组并遍历数组的每个值,直到两个变量相等。
我将程序简化为仅获取 for 循环中每个数组的第一个,因为我遇到了一个问题,即程序似乎只是跳过了 for 循环并终止。
下面首先是 prata 代码片段,然后是我的一段代码。任何反馈(甚至是辱骂性的>_<)都会很有用。
#include <iostream>
#include <cstring>
int main() {
using namespace std;
char word[5] = "?ate";
for (char ch = ‘a’; strcmp(word, "mate"); ch++) {
cout << word << endl;
word[0] = ch;
}
cout << "After loop ends, word is " << word << endl;
return 0;
}
我的代码(虽然可能做得不好,但我可以接受)
#include <iostream>
#include <cstring>
int main() {
using namespace std;
char word[5] = "word";
char test[5] = "????";
int j = 0;
int i = 0;
cout << "word is " << word << "\nTest is " << test << endl;
cout << word[0] << " " << test[0] << endl;
for (char temp = '?'; word[0] == test[0] || temp == 'z'; temp++) {
if ((word[i]) == (test[j])) {
test[j] = temp;
j++;
temp = '?';
}
test[j] = temp++;
cout << test << endl; //Added to see if the for loop runs through once,
//which is does not
}
return 0;
}