从 plugin_path 返回局部变量我该如何改变它

returning local variable from the plugin_path how i can chage it

先生,我使用了字符串连接过程,我认为如果文件名为“plugin1”,那么在那个文件中“plugin1.dll”就会在那里,所以我连接字符串的方式是输出“ C://DataViz//plugin1//plugin1.dll” 然后使用简单的 fopen 函数我检查给定路径中是​​否有文件,如果没有则“return NULL” 或 return “路径”.

#include <stdio.h>
#include <conio.h>
#include <string.h>

char* plugin_path(char filename);

int main(){
    char *path;
    char filename[] = "plugin";
    
    path = plugin_path(filename);
    printf("%s", path);
    return 0;
}

char* plugin_path(char filename){
    char plugin[] = "C:\data\";
    char plugin1;
    char *str = plugin1;
    
    strcat(plugin, filename);
    strcat(plugin," \ ");
    strcat(plugin, filename);
    strcat(plugin,".dll");
    
    return str;
  }

你能帮我写上面的代码吗

您应该为新字符串分配足够的大小,return指向分配区域的指针。

此外,您应该使用 const char*,而不是 char 作为接收字符串的参数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* plugin_path(const char* filename);

int main(){
    char *path;
    char filename[] = "plugin";
    
    path = plugin_path(filename);
    printf("%s", path);
    free(path);
    return 0;
}

char* plugin_path(const char* filename){
    char plugin[] = "C:\data\";
    const char* part1 = " \ ";
    const char* part2 = ".dll";
    /* +1 for terminating null-character */
    char *str = malloc(strlen(plugin) + strlen(filename) * 2 + strlen(part1) + strlen(part2) + 1);
    
    strcpy(str, plugin);
    strcat(str, filename);
    strcat(str, part1);
    strcat(str, filename);
    strcat(str, part2);
    
    return str;
}