编写自定义函数,删除字符串中指定下标n的字符

AAAAABAIN 2016-01-07 11:04:03
//编写自定义函数,删除字符串中指定下标n的字符
#include<stdio.h>
#include<string.h>
void delete_n(char s[100],int n)
{
int i;
for(i=0;i<strlen(s);i++)
{
if(i==(n-1))
{for(;i<strlen(s);i++) s[i]=s[i+1];}
}
for(i=0;i<strlen(s);i++) printf("%c",s[i]);

}
main()
{
int n;
char s[100];

scanf("%d",&n);
gets(s);
delete_n(s,n);
}
编译没出错,运行不了啊
...全文
332 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
_郭 2016-01-08
  • 打赏
  • 举报
回复
另外你试着把
scanf("%d",&n);
gets(s);
改成
scanf("%d",&n);
rewind(stdin);
gets(s);
试试,如果不行的话,你最好把问题现象描述一下。
_郭 2016-01-08
  • 打赏
  • 举报
回复
加了一个rewind(stdin)测试正常, 环境是vs2015,不支持gets,换成了scanf,输出结果符合你的要求,你的delete_n函数没看
#include<stdio.h>
#include<string.h>
void delete_n(char s[100], int n)
{
	int i;
	for (i = 0; i<strlen(s); i++)
	{
		if (i == (n - 1))
		{
			for (; i<strlen(s); i++) s[i] = s[i + 1];
		}
	}
	for (i = 0; i<strlen(s); i++) printf("%c", s[i]);
 
}
void main()
{
	int n;
	char s[100];
	scanf("%d", &n);
	scanf("%s",s);
	delete_n(s, n);
}
paschen 2016-01-08
  • 打赏
  • 举报
回复

int main()
{
	int n;
	char s[100];

	scanf("%d",&n);
	getchar(); //接收掉回车产生的'\n'
	gets(s);
	delete_n(s,n); 
}
zhouxiaofeng1021 2016-01-08
  • 打赏
  • 举报
回复
引用 3 楼 wang0635 的回复:
gets(s); 前加上 getchar(); 吃掉前面scanf剩下的 '\n' 也可以。 原因:用scanf 输入时,最后的 '\n' 仍保留在输入流中,紧随其后的 gets 就只得到了一个空串
说的对·~~~ 我试了 是这样的·~~ #include<iostream> using namespace std; void delete_n(char s[100],int n) { int i; for(i=0;i<strlen(s);i++) { if(i==(n-1)) {for(;i<strlen(s);i++) s[i]=s[i+1];} } for(i=0;i<strlen(s);i++) printf("%c",s[i]); } int main(){ int n; char s[100]; scanf("%d",&n); getchar(); gets(s); delete_n(s,n); system("pause"); return 0; }
wang0635 2016-01-08
  • 打赏
  • 举报
回复
gets(s); 前加上 getchar(); 吃掉前面scanf剩下的 '\n' 也可以。 原因:用scanf 输入时,最后的 '\n' 仍保留在输入流中,紧随其后的 gets 就只得到了一个空串

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧