我的代码,当你键入这些被称为“最近的”返回字符指针:问题与功能
char* runRecent() {
FILE *ffp;
ffp = fopen("bash.txt","r");
char line[MAXLINE];
int fileItCount = 0;
for (int i = 0 ; i < numLinesinFile ; i++) {
fgets(line, sizeof(line), ffp);
if (fileCounter - 2 < 0){
printf("No recent commands exist.\n");
exit(EXIT_FAILURE);
}
if (i == (numLinesinFile - 2) && i >= 0) {
printf("Previous command: %s\n",line);
char * lineRet = strdup(line);
printf("line ret: %s\n",lineRet); //output: correct, something along the lines of "ls" or "ls -a"
printf("line ret: %d\n",&lineRet); //output: 1528174960
return lineRet;
}
}
}
的lineRet随后被传递给函数:
start(runRecent());
凡函数声明看起来像:
void start(char inputBuf[]){
printf("input is %s\n",inputBuf); //prints the command "recent" instead of the previous command that was executed
}
为什么这会返回当前命令而不是前一个?
不要忘记'free'运行结果'runRecent'。 – emlai
@zenith我在哪里可以免费得到runRecent的结果? – sc1892353
某处您可以访问其返回值以及将其释放的位置。 – emlai