你好,我的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("%255s",&srchstr);
->
scanf("%255s", srchstr);
scanf("%255s",&repstr);
->
scanf("%255s",repstr);
该 &
操作符意味着你要传递一个给定的内存空间的地址,实际上是一个指针,用来存储输入的内存空间,由一个变量名来标识,这将是很好的,因为 scanf
正是期望。
但由于 srchstr
和 repstr
已经是指针,您实际上是在传递指针的地址(指针的指针),而不是存储输入的内存空间的地址(内存空间的指针)。
侧面说明。
fflush(stdin)
引发未定义的行为,它的意思是与 stdout
.
你可以将其替换为:
int c;
while((c = fgetc(stdin)) != '\n' && c != EOF) {}