這裏是我的代碼:C++返回和使用字符數組的指針
#include<stdio.h>
#define MAXLINE 100
/*print the reverse of the input*/
int getline1(char line[], int maxline);
char *reverse(char);
main(){
int len;
char line[MAXLINE];
char *rp;
while ((len = getline1(line, MAXLINE)) > 0)
rp = reverse(line);
printf("%s", *rp);
return 0;
}
int getline1(char s[], int lim){
int c, i;
for (i = 0; (c=getchar()) != EOF && c != '\n'; i++)
if (i > lim-1)
continue;
else
s[i] = c;
if (c == '\n'){
s[i] = c;
i++;
}
s[i] = '\0';
return i;
}
char *reverse(char ca[]){
int i;
int i1 = 0;
char *rp;
char reversed[MAXLINE];
for (i = MAXLINE-1; i >= 0; i--){
reversed[i1] = ca[i];
i1++;
}
rp = reversed;
return rp;
}
但是當我嘗試編譯它,我收到以下錯誤:
reverse.cpp: In function ‘int main()’:
reverse.cpp:14:20: error: invalid conversion from ‘char*’ to ‘char’ [-fpermissive]
reverse.cpp:7:7: error: initializing argument 1 of ‘char* reverse(char)’ [-fpermissive]
reverse.cpp:15:19: warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘int’ [-Wformat]
我沒有太多的經驗與C++。我究竟做錯了什麼?我只想做一個指向char數組的指針並返回它。
你可能正在使用C++ *編譯器*,但你的代碼基本上C. –
你應該把它標記爲家庭作業,或C(並刪除C++,因爲這裏沒有任何C++)。 – juanchopanza
事實上,你正在返回一個指向__local臨時數組___的指針,這一點不能被強調。這是一個嚴重的錯誤,你應該採取DeadMG的建議。 – Blastfurnace