C语言怎样从字符串中删除确定头尾字符的字符串?

作者&投稿:老嵇 (若有异议请与网页底部的电邮联系)
C语言删除字符串中指定字符~

一、问题描述:从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。
1、输入:第一行是一个字符串; 第二行是一个字符。
2、输出:删除指定字符后的字符串。
二、设计思路:
1、 同插入问题,定义两个字符数组a,b。以及标志删除位置的int型pos。
2、用gets函数输入数组a的值,并利用for循环将数组a copy到 数组b。
3、利用for循环,令pos位的数组b元素赋值到a。
三、实现代码如下:

四、编译并执行,运行结果如下:

扩展资料
gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:gets(s),其中s为字符串变量(字符串数组名或字符串指针)。
gets()函数读取到
(我们输入的回车)于是停止读取,但是它不会把
包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。
gets(s) 函数中的变量s为一字符串指针。如果为单个字符指针,编译连接不会有错误,但运行后内存溢出错误。宽字符版本,当使用unicode宽字符文本时,使用这个函数 _getws();在C11标准中被删除,可用C标准库中的fgets代替.
参考资料:百度百科 gets

字符串用数组表示.
比如用str[999]表示字符数组。算出字符长度,删除str[0]和最后一个字符。
#include
#include
#define n 100
void main()
{
char a[n],i,t;
scanf("%s",a);
t=strlen(a);
for(i=0;i<t-1;i++)
baia[i]=a[i+1];
a[i-1]='\0';
printf("%s",a);
}

扩展资料:
字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
参考资料来源:百度百科-字符串

很简单:字符串以'\0'为结尾,只要执行:a[1]='\0',或者a[1]=0即可。
如果不是删除到末尾,只要把后面的移动到前面来覆盖要删除的部分即可,最后一个是'\0':
比如,要删除上面字符串中"am a"4个字符:
i=2;
do {a[i]=a[i+4];while(i++,a[i+4]);


请问怎么用c语言从一段不规则字符串中把两个引号之间的字符读取到一个...
调用 sscanf() 即可。读法:跳过第一个引号以前的字符,读下面字符,直到下一个引号前为止。include <stdio.h> int main(){ char s[100]="abdc12\\"3456 xyz-%%\\"%ABe";char s2[100];int i;sscanf(s,"%*[^\\"]\\"%[^\\"]",s2); \/\/ 关键的语句和格式在此行 printf("%s\\n",s2...

汇编语言程序设计 从字符串中截取指定长度的字符
程序代码:DATASEGMENT MAXLEN DB 100 ACTLEN DB ?DB 100 DUP(?)INFO1DB 0AH,0DH,'input the string:','$'INFO2DB 0AH,0DH,'input the number:','$'INFO3DB 0AH,0DH,'the substring is:','$'INFO4DB 0AH,0DH,'input error!','$'DATAENDS STACKSEGMENT STACK DB 200 DUP(...

C语言中在字符串中查找指定字符串
include"stdio.h" #include"string.h" void main() { char *str1="nayitianzhi daoanzd"; char *str2="anz"; int index[20]; int num = 0; int i,j; for (i = 0; i < strlen(str1) - 3; i++) for (j = 0; j < 3; j++) { if (*(str1 + i) == *(str2 + ...

c语言程序中 从字符串s中删除指定的字符c.
c语言从字符串s中删除字符c:include<stdio.h> \/*从字符串S中删除字符c*\/ voidsqueeze(char[],char);intmain()include<stdio.h> gets(s);printf("输入需要删除的指定字符ch:");ch=getchar();for(i=j=0;s[i]!='\\0';i++)if(s[i]!=ch)s[j++]=s[i];s[j]='\\0';printf("...

C语言编程 自定义从字符串中删除指定的字符函数
while(0!=*ps1)\/\/调整str中字符位置,删除所有置为1的位 { if(1!=*ps1){ ps1++;continue;} ps2=ps1+1;while(0!=*ps2 && 1==*ps2)ps2++;if(0==*ps2)break;ps1++=*ps2;ps2=1;} ps1=0;return str;} 一楼的:只能删除第一个字符,而且后面的写法是错误的。二楼的:没有释放...

C语言取出字符串中的字母
include <stdio.h> int main() { char s[100];int i;scanf("%s",s);for(i = 0;s[i];i++) { if(a[i] >= 'a' && a[i] <= 'z') s[i] -= 'a' - 'A';else if(a[i] >= 'A' && a[i] <= 'Z') a[i] -= 'A' - 'a';} printf("%s\\n",s);return ...

C语言(不是C++)中如何从指定字符串中提取指定开始位置到指定结束位置...
给你写一个简单的吧,写得复杂了,也不好,上次给你写的一个,采用了一些特殊方法,还不如直接写的,晕!学程序,关键是学方法!void substr(char *str1,char *str2,int start,int end){ int ii;for (ii=start;ii<=end;ii++)str1[ii-start]=str2[start-1];str1[ii-start]='\\0';...

c语言如何从字符串数组中分离处单个字符
c语言的话,本质上来说是没有字符串数组这概念,字符串数组就是单个字符串起来,就是说定义的时候已经分成单个字符,不用再去分离 例如,定义一个char *str = "asdf";那么str[0],str[1],str[2],str[3]就会分别对应asdf 如果你是要分割char *str = "a,b,c,d",这种类型的字符串,你可以...

用C语言 从一串字符串中找出相同字符串最多的字符串 比如“aaabbbbcccc...
用一个结构1保存字符a,以及其出现的次数;另一个结构2保存b,以及其出现的次数;比较完了后,由于b的个数多余a的,保存b及其出现的次数(结构1保存字符b,以及其出现的次数);结构2存入c,以及其出现的次数;接着比较直到最后。

用Pascal语言写一个程序,从字符串中将指定的字母排除掉
var s:array[1..1000] of char;ch:char;l,i,j,k:integer;begin read(s[1]);i:=1;while ord(s[i])<>13 do begin i:=i+1;read(s[i]);end;readln;read(ch);while ord(ch)<>13 do begin for l:=1 to i do if (s[l]=ch) and (ch<>' ') then s[l]:='@';read...

C语言-删除字符串中指定的字符(一、问题描述:从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。 1、输入:第一行是一个字符串; 第二行是一个字符。 2、输出:删除指定字符后的字符串。 二、设计思路:1、 同插入问题,定义两个字符数组a,b。以及标志删除位...)

C语言如何实现删除字符串中的字符(它是编程语言中表示文本的数据类型。 通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子... 从字符串s中截取第I个字符开始后的长度为l的子串。 例:copy(‘abdag’,2,3)=’bda’ 3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个...)

C语言中删除字符串(输出的应该是uy ioiootg吧 。 如果是把字符串中的所有子串都删除的话可以这么写: #include<stdio.h> #include<string.h> main() { char str[256],ch[10]; int i,j,n,k; puts("input:"); gets(str); gets(ch); n=strlen(ch); for(i=0;str[i];i++){ for(j=0,k=0;ch[j]==str[i+k]&&ch[j]!='\0';k++,j++); if(j==n...)

C语言如何实现删除字符串中的字符(利用指针对字符串进行字符串数据重新组织,可以很方便的完成删除指针字符。参考代码如下:#include <stdio.h> void del_chr( char *s, char ch ) {     char *t=s; //目标指针先指向原串头   )

c语言字符串删除(#include<stdio.h>#include<string.h>voiddelete1(chars[],chart[]){inti,j,k;intflag=0;//一:代码缺陷//增加判断。应该if(!s||!t){return;}if(strlen(s)<strlen(t)){return;}for(i=j=0;s[i]!='\0';i++){for(k=0;t[k]!='\0';k++){if(s[i+k]==t[k])flag=1;else{flag=0;break;}}//二,逻辑错误/*if(flag){s[j++]=s[i+k];i=i+k+1;...)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网