即时尝试反转字符串,但即时通讯运行时出现问题,它表示“下标值既不是数组也不是指向矢量”指向char持有者=输入[一世];有人可以帮助解释给我反转c中的字符串错误下标值既不是数组也不是指针也不是向量
myreverse(input, rev, len)
{
int i = 0;
int j= len -1;
char string[len];
while(i<j)
{
char holder = input[i];
string[i]= string[j];
string[j] = holder;
i++;
j--;
}
}
int main(int argc, char* argv[]) {
if (argc < 2) {
printf("Usage: %s <word to reverse>\n", argv[0]);
exit(1);
}
char* input = argv[1];
int len = strlen(input);
char rev[len + 1]; // Adding one for the null terminator
myreverse(input, rev, len);
printf("Rev string is %s\n", rev);
}
不要使用K&R(预标准)C函数声明。你省略了'myreverse()'函数中的类型,所以返回类型和参数类型都被假定为'int',并且你不能下标int。它应该是'void myreverse(char * input,char * rev,int len)'或其附近。你不要在代码中使用'rev'参数;那也不好。 –
@JonathanLeffler奖励:试图将隐式'int'与VLA('char string [len]')结合使用,这是一种C99功能。 – melpomene
@melpomene,为什么它是一个“奖金”?两者都是完全合法的。如果你想责怪某事,责备C接受这种宽松的投入。 – zneak