比较 c++ 中的字符数组

Comparing char array in c++

本文关键字:字符 数组 c++ 比较      更新时间:2023-10-16

我需要 c++ 方面的帮助。我想比较字符数组。所以,我做了一些编码。不幸的是,它总是出现错误。我无法运行它。在这里,我附上了代码。请帮我修复此代码。我想检查结论是否等于句子 1,那么它是无效的,但如果它不等于句子 1,那么它是有效的。请帮帮我。谢谢。

int number;
char sentence[number];
char rules[50];
char statement[50];
char premis1[100];
char premis2[100];
char conclusion[100];
cout<<"How many sentence you want to insert:";
cin>>number;
cout<<endl;
for(int i=0; i<number; i++)
{
cout<<"Enter sentence ";
cout<<i+1;
cout<<":";
cin>>sentence[i];
cin.ignore();       
}
cout<<"Enter premis 1:";
cin.getline(premis1,100);
cin.ignore();
cout<<"Enter premis 2:";
cin.getline(premis2,100);
cin.ignore();

cout<<"Enter conclusion:";
cin.getline(conclusion,100);
cin.ignore();
for(int i=0;i<number;i++)
{
if(strcmp(conclusion,sentence[0],)==0)
{
cout<<"Statement is invalid."<<endl;
cout<<endl; 
}
else if(strcmp(conclusion,sentence[0])!=0)
{
cout<<"Statement is valid."<<endl;
}
else
cout<<"exit"<<endl;         
}

您在程序中犯的错误:

  1. 您从未初始化过number但在sentence[]中使用,即使在number的声明之后它仍然无效,这是因为编译器必须知道要定义的数组长度的确切值。
  2. 您已经将sentence定义为 char 数组,但从您的代码来看,您似乎想将一个完整的句子存储到数组的每个元素中,这是不可能的。在此处使用std::string
  3. 您正在对 char 数组的第一个字符执行strcmp(),而不是带有结论的句子。

旁白:请不要忘记包含代码中常见的重要头文件,我们必须假设您的程序不完整,因为它缺少main()和语句,例如strcmp(...,...',' - incomplete)


重新设计了程序(请注意,这里使用了using namespace std语句,因为它只是一个演示的小程序,为了简单起见,到处都去掉std::前缀(:

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(void) {
int number = 0;
vector<string> sentence;
string tempSentence;
string conclusion;
cout << endl;
cout << "How many sentences you want to insert? ";
cin >> number;
for (int i = 0; i < number; i++) {
fflush(stdin);
cout << "Enter sentence " << (i + 1) << ": ";
getline(cin, tempSentence);
sentence.push_back(tempSentence);
}
cout << "Enter conclusion: ";
getline(cin, conclusion);
if (conclusion == sentence[0])
cout << "The statement is invalid." << endl;
else if (conclusion != sentence[0]) 
cout << "The statement is valid." << endl;
else
cout << "EXIT" << endl;
return 0;
}

我在这里std::vector<>std::string,在每次迭代(从#include <vector>开始(以动态方式给出的定义数量的句子中插入单个字符串,并使用std::string而不是char arr[],在这里很容易比较字符串。

示例输出:

$ g++ -o prog prog.cpp; ./prog
How many sentences you want to insert? 3 // --- INPUT
Enter sentence 1: This is the first sentence.
Enter sentence 2: This is the second sentence.
Enter sentence 3: This is the third sentence.
Enter conclusion: This is NOT the first sentence.
The statement is valid.   // first sentence != conclusion // --- OUTPUT