直接看代码:
#include<stdio.h>
#include<string.h>
void main()
{
char str[100],str_new[100],t
char *p=str
int at=0
puts("输入字符串:")
gets(str)
puts("要插入的字符:")
t=getchar()/*.输入的字符被存放在键盘缓冲区中.直到按回车为止(回车字符也放在缓冲区中)其他字符会保留在键盘缓存区中,等待后续getchar调用读取*/
fflush(stdin)//刷输入新缓存区的内容
puts("插入的位置:")
scanf("%d",&at)
if(at>strlen(str))
{
puts("输入长度应该小于字符串长度!")
return
}
int j=0
for(int i=0str[i]!=0i++)//新的字符串在这个for()生成
{
if(i==at-1)
str_new[j++]=t
str_new[j++]=str[i]
}
str_new[j]='\0'
puts(str_new)
}
这里使用生成新数组的for循环较简洁,但是要新定义一个数组,有一定的系统开销,读者也可以用其它的方法。
有多种情况会发生这种现象,不过这种情况常见于安全软件对程序的检测,从而保护操作系统。
其原理大概是:当C语言编译运行程序时,安全软件会起到保护系统的功能,会自行对该程序进行无显示的扫描检测。这种对程序扫描的操作是看不到的。
判断方法:退出安全软件(包含系统自带的安全软件和第三方安全软件),至少等待几秒的时间(因为安全软件的退出需要关闭一系列的监控,大概需要几秒以上)。
此时运行C语言的程序,看看还会不会出现这种情况。
如果还存在延迟,可以尝试关闭系统的防火墙(这种情况不常见)。
如果退出安全软件后没有出现延迟现象,说明是安全软件的问题,此时可以按照下面的方法进行操作。
在安全软件中添加保护规则,这里以360安全卫士为例,其他的安全软件类似:打开安全卫士,打开【设置】:
打开【设置】
打开【安全防护中心】选项:
打开【安全防护中心】选项
在【安全防护中心】选项中,选择【开发者模式】选项:
选择【开发者模式】
为程序代码的路径添加到保护规则中:
打勾,新增路径,确定
此时再运行程序就不会出现输入延迟的现象。
如果还有疑问,可随时追问。
话不多说,直接写代码,按照你说的我理解为:输入没有限制的字符数,输入完了用屏幕显示出来,每一个字符中间都要有一个空格作为间隔,对吗?,代码如下:#include<stdio.h>
void
main()
{
int
x,y=0
char
*a="123456"//在这个“”里面存放你想输出的字符,就可以了,接下来用for输出。
for(x=0a[y]!=0x++)
{
printf("%c
",a[y])
y++
}
getchar()
}