gpt4 book ai didi

c - 在 C 中,longestCommonPrefix 从函数返回但未打印到控制台

转载 作者:行者123 更新时间:2023-11-30 14:32:49 26 4
gpt4 key购买 nike

在下面的代码中,函数返回一个字符指针“p”,并存储在“out”变量中,该变量也是一个指针。当我尝试使用 printf 语句进行打印时,它不会向控制台输出任何内容,有任何指针吗?

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

char * longestCommonPrefix(char **strs, int strsSize){
int j = 0;
char *p;
char result[10];
int len = strlen(result);
while(j < strlen(strs[0])){
if(strs[0][j] == strs[1][j] && strs[1][j] == strs[2][j]){
result[len++] = strs[0][j];
}
j++;
}
result[len] = '\0';
p = result;
return p;
}

int main()
{
char *arr[] = {"flower", "flow", "flight"};
char **ptr;
char *out;
int size = sizeof(arr) / sizeof(arr[0]);
ptr = arr;
out = longestCommonPrefix(ptr, size);//breakpoint here shows the expected output
printf("%s", out); //does not print the output to console
}

最佳答案

感谢@Paul Ogilvie,我能够通过堆中的动态内存分配、strcpy 到指针并返回指针来解决这个问题,因为我正在打印时本地内存不存在。

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

char * longestCommonPrefix(char **strs, int strsSize){
int j = 0;
char* p = malloc(10 * sizeof *p);
char result[10];
int len = strlen(result);
while(j < strlen(strs[0])){
if(strs[0][j] == strs[1][j] && strs[1][j] == strs[2][j]){
result[len++] = strs[0][j];
}
j++;
}
result[len] = '\0';
strcpy(p, result);
return p;
}

int main()
{
char *arr[] = {"flower", "flow", "flight"};
char **ptr;
int size = sizeof(arr) / sizeof(arr[0]);
ptr = arr;
char *out = longestCommonPrefix(ptr, size);
printf("%s\n", out);
free(out);
}

关于c - 在 C 中,longestCommonPrefix 从函数返回但未打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59668892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com