1、可以写一个函数接受一个字符串和一个字符,如果此字符出现在字符串中,就将串中的字符删除,要求删除该字符后,后续的字符向前移,以填充该空位。
创新互联成立于2013年,先为乌海等服务建站,乌海等地企业,进行企业商务咨询服务。为乌海企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
2、例程:
#includestdio.h
#includestring.h
#define MAX 80
void Delete(char str[],char c)
{
int i;
int l=strlen(str);
for(i=0;il;i++)
{
if(str[i] == c)
{
int j;
for(j=i;jl;j++)
str[j]=str[j+1];
break;
}
}
}
int main()
{
char str[MAX],c;
printf("输入一个字符串:");
gets(str);
printf("输入一个字符:");
c=getchar();
Delete(str,c);
puts(str);
return 0;
}
scanf将接收到的回车扔回到缓冲区,gets将接收到的回车符号转变为\0存入str,使用gets不检查字符串是否超出大小,存在安全问题,建议用fgets
#include stdio.h
#include string.h
int main(void){
char str1[10]="aaaaaaaaa",str2[10]="bbbbbbbbb";
scanf("%s",str1);
// getchar();
gets(str2);
return 0;
}
这里面的getchar()就是为了接收扔回到缓冲区的回车,否则,str2只能接收到一个回车符。
5 scanf("%s",str1);
(gdb) s
abcdef
(gdb) p str1
$1 = "abcdef\000aa"
(gdb) p str2
$2 = "\000bbbbbbbb"
getchar函数每次只从缓冲区中接受一个字符。
getchar有一个int型的返回值。
当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符,getchar函数的返回值是用户输入的第一个字符的ASCⅡ码,如出错返回-1,且将用户输入的字符回显到屏幕。
如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。
举例如下:
char ch;
ch = getchar(); // 接收用户输入的第一个字符,并赋值给字符变量ch 返回值为输入第一个字符的ASCII码
gets,scanf都会在末尾加上\0的,要不然字符串就没法结束了;
他们的不同在于,scanf碰到缓冲区里面的空字符(空格,tab,回车,换行就会截断并添加\0),而gets是要等回车才截断字符串并添加\0的;
比如用输入字符串:abcdefg hijk回车;
用scanf的话,会得到abcdefg,而gets则是:abcdefg hijk。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。