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);
该程序背后的整个想法是让用户能够选择他想用什么替换什么文本(整个代码与代码中定义的 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);
&
运算符意味着您正在传递给定内存 space 的地址,实际上是一个指针,用于存储输入的内存 space,由变量名称标识,那很好,因为 scanf
正是这样期望的。
但是由于 srchstr
和 repstr
已经是指针,你实际上传递的是指针的地址(指向指针的指针)而不是内存地址 space (指向存储输入的内存 space) 的指针。
旁注:
fflush(stdin)
Invokes undefined behaviour,它意味着与 stdout
.
一起使用
您可以将其替换为:
int c;
while((c = fgetc(stdin)) != '\n' && c != EOF) {}
您好,我的 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);
&
运算符意味着您正在传递给定内存 space 的地址,实际上是一个指针,用于存储输入的内存 space,由变量名称标识,那很好,因为 scanf
正是这样期望的。
但是由于 srchstr
和 repstr
已经是指针,你实际上传递的是指针的地址(指向指针的指针)而不是内存地址 space (指向存储输入的内存 space) 的指针。
旁注:
fflush(stdin)
Invokes undefined behaviour,它意味着与 stdout
.
您可以将其替换为:
int c;
while((c = fgetc(stdin)) != '\n' && c != EOF) {}