即時嘗試反轉字符串,但即時通訊運行時出現問題,它表示「下標值既不是數組也不是指向矢量」指向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