【发布时间】:2020-04-22 23:30:28
【问题描述】:
您好,我的 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);
程序背后的整个想法是让用户能够选择他想用什么替换什么文本(整个代码在代码中定义srchstr 和repstr 工作得很好,但我无法实现用户输入)
这就是它最初的样子:
char *srchstr = "400,300";
char *repstr = "400,300: (000,000,000) #000000";
我该如何解决它,以便用户可以输入 srchstr 和 repstr ?
【问题讨论】:
-
在
scanf调用中去掉&。scanf("%s",...)想要一个char *,它是srchstr,但&srchstr是char **。所以...scanf("%255s",srchstr); -
fflush(stdin)是未定义的行为,即不要那样做。代替scanf,使用fgets读取一行输入,并使用strcspn到remove the newline thatfgetsputs in the buffer。