运行代码后没有输出产生空白,一无所获为什么?

问题描述

运行代码后没有输出。空白,一无所获。有什么问题?

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

char* foo(){
    char temp[] = "World";
    char *result;
    strcpy(result,temp);
    return result;
}

int main(){
    printf("%s",foo());
    return 0;
}

解决方法

这里的指针 result 没有被分配任何内存。所以,你首先需要为它分配一些内存,否则你会得到一个分段错误。

一种方法是动态分配内存,在这里使用 callocmalloc。它位于 stdlib.h 头文件中。所以,你必须包括它。那么,

char *result = malloc(strlen(temp)+1);

会成功。