繁体   English   中英

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);

&运算符表示您正在传递给定 memory 空间的地址,实际上是指向 memory 空间的指针,该空间用于存储由变量名标识的输入,这很好,因为scanf正是预期的。

但是由于srchstrrepstr已经是指针,因此您实际上是在传递指针的地址(指向指针的指针),而不是存储输入的 memory 空间的地址(指向 memory 空间的指针)。

边注:

fflush(stdin)

调用未定义的行为,它应该与stdout一起使用。

您可以将其替换为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM