C程序。将字符串输入到char指针问题

C program. Taking string input to char pointer problem

您好,我的 C 代码有问题。我试图让用户将字符串分配给先前定义的 char *srchstr;和 char *repstr; 。通过查看其他类似的线程,我尝试以下列方式实现它,但它仍然失败:

char *srchstr;
srchstr = malloc(256);
char *repstr;
repstr = malloc(256);
printf("what are you searching for?:");
scanf("%255s",&srchstr);
fflush(stdin);
printf("\n what do you want to replace it with?:");
scanf("%255s",&repstr);

该程序背后的整个想法是让用户能够选择他想用什么替换什么文本(整个代码与代码中定义的 srchstrrepstr 一起工作,但我不能实现用户输入) 这是它在开始时的样子:

char *srchstr = "400,300";
char *repstr = "400,300: (000,000,000) #000000";

如何修复它以便用户可以输入 srchstrrepstr

scanf("%255s",&srchstr); -> scanf("%255s", srchstr);

scanf("%255s",&repstr); -> scanf("%255s",repstr);

& 运算符意味着您正在传递给定内存 space 的地址,实际上是一个指针,用于存储输入的内存 space,由变量名称标识,那很好,因为 scanf 正是这样期望的。

但是由于 srchstrrepstr 已经是指针,你实际上传递的是指针的地址(指向指针的指针)而不是内存地址 space (指向存储输入的内存 space) 的指针。

旁注:

fflush(stdin)

Invokes undefined behaviour,它意味着与 stdout.

一起使用

您可以将其替换为:

int c;
while((c = fgetc(stdin)) != '\n' && c != EOF) {}