马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
目前想要解决 变量shanzifu会将回车也接收了,然后会进行一次shan()函数运行的问题
有想过进行接收判定,但是会提前用到shanzifu变量
目前希望有的两种解决方法:
1.接收回车再进行一次判定也没问题,但是不需要再打印一次“输入你要删除的字符”这一段话了
2.不接收回车
这个是要用外部函数来解决的一个作业
这个是外部函数#include <stdio.h>
extern zifu[999], i;
void shan(int zifu[999], int i)
{
char shanzifu;
int chushi = 0;
printf("输入你要删除的字符。\n");
scanf_s("%c", &shanzifu);
//shanzifu = getchar();
for (;i >= chushi;chushi++)
{
if (zifu[chushi] != shanzifu)
{
printf("%c", zifu[chushi]);
}
else
{
;
}
}
printf("\n");
i = 0;
}
这个是主函数#include <stdio.h>
int zifu[999];
int i = 0;
void main()
{
printf("输入你的文章.\n");
//scanf_s("%c", &zifu);
while ((zifu[i] = getchar()) != '\n')
{
printf("%c", zifu[i]);
i++;
}
printf("\n");
while (1)
{
shan(zifu, i);
}
}
谢谢。
在你的代码中,回车符('\n')被当作一个字符接收并存储到变量 shanzifu 中。如果你不希望接收回车符,可以使用以下两种方法解决:
方法一:在判定输入是否为回车之前先接收并丢弃回车符。
scanf_s(" %c", &shanzifu); // 注意空格,它会跳过空白字符(包括回车符)
这样, scanf_s 函数会自动跳过回车符并接收下一个非空白字符作为输入。
方法二:修改接收函数,使用 getchar 函数代替 scanf_s 来接收字符,并在循环中跳过回车符。
#include <stdio.h>
extern int zifu[999], i;
void shan(int zifu[999], int i) {
char shanzifu;
int chushi = 0;
printf("输入你要删除的字符。\n");
shanzifu = getchar(); // 使用 getchar 接收字符
while (shanzifu == '\n') { // 跳过回车符
shanzifu = getchar();
}
for (; i >= chushi; chushi++) {
if (zifu[chushi] != shanzifu) {
printf("%c", zifu[chushi]);
}
}
printf("\n");
i = 0;
}
int main() {
printf("输入你的文章.\n");
while ((zifu[ i] = getchar()) != '\n') {
printf("%c", zifu[ i]);
i++;
}
printf("\n");
while (1) {
shan(zifu, i);
}
return 0;
}
这样, getchar 函数会逐个接收字符,并在循环中判断是否为回车符。如果是回车符,则继续接收下一个字符。
希望这些解决方法能帮助到你!如果有任何进一步的问题,请随时提问。
如果问题已经解决,请设置最佳答案
|