C 数组比较故障
我正在写一个程序,看看输入的字符串是否是回文 我使用C,而不是C++ 为此我编写了一个函数,输入的字符串被放入主函数中名为data的数组中C 数组比较故障,c,arrays,C,Arrays,我正在写一个程序,看看输入的字符串是否是回文 我使用C,而不是C++ 为此我编写了一个函数,输入的字符串被放入主函数中名为data的数组中 int palindroom(char data) { length = sizeof(data); //getting the length of the word for (i = 0; i < length; i++){ j = length-1-i; //inverting the string resstr[i] = data
int palindroom(char data) {
length = sizeof(data); //getting the length of the word
for (i = 0; i < length; i++){
j = length-1-i; //inverting the string
resstr[i] = data[j]; //
}
if (data = resstr)
return (1); //returning result
else return (0); }
int回文(字符数据){
length=sizeof(data);//获取单词的长度
对于(i=0;i
我在VisualStudio中遇到c2109和E0142错误,但我并不真正理解我做错了什么。
(知道我在学校刚开始学习c可能会很好,所以我对c有点陌生)- 您传递的是一个字符,而不是一个单词。您需要传递字符数组才能传递单词
- 要知道以null结尾的字符串的长度,可以使用
函数strlen()
int palindroom(char data) {
length = sizeof(data); //getting the length of the word
for (i = 0; i < length; i++){
j = length-1-i; //inverting the string
resstr[i] = data[j]; //
}
if (data = resstr)
return (1); //returning result
else return (0); }
strev
,但可以做更简单的事情来知道字符串是否为回文data=resstr
是一个赋值而不是比较。即使是==
,比较也不会达到你的预期。要比较STRIMG,您需要使用strcmp()
您的代码存在一系列问题
int palindroom(char data)
在这里,数据需要一个字符,但您将指向char的指针传递给它
length = sizeof(data);
您需要的函数不是sizeof(),而是strlen()
这里,首先“=”是赋值运算符,而用于比较的运算符是“==”。但是,“==”也不适用于字符串。为此,您需要strcmp()
参考资料:
代码
int palindroom(char * data) {
length = strlen(data); //getting the length of the word
for (i = 0; i < length; i++){
j = length-1-i; //inverting the string
resstr[i] = data[j]; //
}
if (strcmp(resstr, data) == 0)
return (1); //returning result
else return (0);
}
int回文(字符*数据){
length=strlen(数据);//获取单词的长度
对于(i=0;i
数据
是单个字符
,因此数据[j]
没有任何意义。还有什么是resstr
?另外,假设您将data
更改为char*
,那么sizeof(data)
将不会返回数组的大小,data=resstr
是一个赋值,而不是一个比较(无论如何,您不能使用=
来比较内容char
数组)数据是一个数组,resstr也是,忘了告诉别人this@KarsNoordhuis“数据是一个数组”不,它不是。@MartinJames我确实将它们定义为全局数组,我只是没有包括其余的代码。只有回文函数
int palindroom(char data)
length = sizeof(data);
if (data = resstr)
int palindroom(char * data) {
length = strlen(data); //getting the length of the word
for (i = 0; i < length; i++){
j = length-1-i; //inverting the string
resstr[i] = data[j]; //
}
if (strcmp(resstr, data) == 0)
return (1); //returning result
else return (0);
}