C程序。取字符串输入到char指针问题

问题描述 投票:1回答:1

你好,我的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);

Im getting this kinda errors:

程序背后的整个想法是让用户能够选择他想要替换的文本(整个代码与 srchstrrepstr 在代码中定义的,但我不能实现用户输入)这就是一开始的样子。

char *srchstr = "400,300";
char *repstr = "400,300: (000,000,000) #000000";

我怎样才能修正它,让用户可以输入... ... srchstrrepstr ?

c pointers char buffer
1个回答
1
投票

scanf("%255s",&srchstr); -> scanf("%255s", srchstr);

scanf("%255s",&repstr); -> scanf("%255s",repstr);

& 操作符意味着你要传递一个给定的内存空间的地址,实际上是一个指针,用来存储输入的内存空间,由一个变量名来标识,这将是很好的,因为 scanf 正是期望。

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

侧面说明。

fflush(stdin)

引发未定义的行为,它的意思是与 stdout.

你可以将其替换为:

int c;
while((c = fgetc(stdin)) != '\n' && c != EOF) {}
© www.soinside.com 2019 - 2024. All rights reserved.