为什么我的程序没有打印出最终结果?

why does my program not print out the final result?

为什么当我 运行 这段代码接收用户输入的字符串时为什么不打印出最终结果?

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

/* Function Declerations */

/* Global Variables */
char *text = NULL;
int size;
int main(){
    /* Initializing Global Variables */

    printf("enter a number limit for text: ");
    scanf("%d", &size);
    /* Initial memory allocation */
    text = (char *) malloc(size * sizeof(char));

    if(text != NULL){
        printf("Enter some text: \n");
        scanf("%s", &text);
        // scanf(" ");
        // gets(text);
        printf("You inputed: %s", text);
    }

    free(text);
    return 0;
}

/* Function Details */

实际上最终结果是这样的

enter a number limit for text: 20
Enter some text: 
jason

text 已经是 char *,所以你不必将 &text 传递给 scanf,而只需传递 text.

scanf 将指针作为参数以修改指向的值,但是如果将 char ** 作为参数传递,您将修改指向字符串的指针而不是指向的字符串

您只需从 &text 中删除地址,因为文本是一个指针,而字符串始终指向第一个字符。