我的代码错误类型警告1警告C4018和更多错误

时间:2017-03-27 20:27:21

标签: c++ pointers char

两个错误:

1:Warning 1 warning C4018: '<' : signed/unsigned mismatch

2:Error 2 error C3861: 'funcNewStr': identifier not found  

我该如何解决这个问题? 我很乐意帮助您并解释我的错误,以便代码正常工作。 程序收到一个句子并从每个单词中取出第一个字母并组成一个新字符串。

#include <iostream> 
#include <string>


using namespace std;

int main(){
int size = 50;
char* ptr = new char[size];
for(int i = 0; i < size; i++){
    ptr[i] = NULL;
}

cout << "Enter a string: " << endl;
string str;
getline(cin, str);

for (int i = 0; i<str.length(); i++)
    ptr[i] = str[i]; 

funcNewStr(ptr, size);

system("pause");
return 0;
} 


char funcNewStr(char* ptr,int size){//my function
char* newStr = new char[size];
for (int i = 0; i < size; i++){
    newStr[i] = NULL;
}
newStr[0] = ptr[0];
int j = 1;
for (int i = 0; i < size; i++){
    if (ptr[i] == ' '){
        newStr[j] = ptr[i + 1];
        j++;
    }
}

return *newStr;
}

感谢的。

2 个答案:

答案 0 :(得分:0)

str.length()unsigned,因此您可以修复警告,取而代之:

for (int i = 0; i<str.length(); i++)

通过

for (unsigned i = 0; i<str.length(); i++)

您可以在funcNewStr

之前添加函数main的原型
char funcNewStr(char* ptr,int size);

int main(){
...
}

答案 1 :(得分:0)

您需要在main()之前为您的函数添加原型 像这样:

char funcNewStr(char* ptr,int size);

int main(){..}

str.length()也是未签名的,因此您需要将i声明为无符号。

还有一件事

using namespace std;

是不好的做法。这是link解释。