[英]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);
该程序背后的整个想法是让用户能够选择他想用什么替换什么文本(整个代码在代码中定义的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);
&
运算符表示您正在传递给定 memory 空间的地址,实际上是指向 memory 空间的指针,该空间用于存储由变量名标识的输入,这很好,因为scanf
正是预期的。
但是由于srchstr
和repstr
已经是指针,因此您实际上是在传递指针的地址(指向指针的指针),而不是存储输入的 memory 空间的地址(指向 memory 空间的指针)。
边注:
fflush(stdin)
调用未定义的行为,它应该与stdout
一起使用。
您可以将其替换为:
int c;
while((c = fgetc(stdin)) != '\n' && c != EOF) {}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.