每次输出都是第三个字符串

#include <stdio.h>
#include <string.h>
int main(){
char buf[3];
char* ps[3]={
NULL}
;
char* ptr=NULL;
int j=0;
int i=0;
for(i=0;i<3;i++)
{
ptr=fgets(buf,100,stdin);
ps[i]=ptr;
}
printf("你要第几个句子");
scanf("%d",&j);
printf("%s",ps[j-1]);
return 0;
}

你用fgets,相当于把三个句子都堵到了同一个buf里面,后面输入的句子会覆盖前面的句子
把buf换成ptr[i]再跑
我总之大概改了一下

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

int main()
{
    char buf[100];
    char *ps[3] = {
        NULL};
    char *ptr = NULL;
    int j = 0;
    int i = 0;
    for (i = 0; i < 3; i++)
    {
        ps[i] = (char *)malloc(sizeof(char)*100);
        fgets(ps[i], 100, stdin);
        // ps[i] = ptr;
    }
    printf("你要第几个句子");
    scanf("%d", &j);
    printf("%s", ps[j - 1]);
    return 0;
}