精华内容
下载资源
问答
  • 题目:从键盘上输入字符串a,将字符串a中除去数字字符0'~9之后的其它字符保留在字符串b中,并输出字符串b。 #define NUM 32 int main(void) { char a[NUM],b[NUM]; printf("please enter a:"); gets(a); int ...

    题目:从键盘上输入字符串a,将字符串a中除去数字字符0'~9之后的其它字符保留在字符串b中,并输出字符串b。

    #define NUM 32
    
    int main(void) {
    	char a[NUM],b[NUM];
    	printf("please enter a:");
    	gets(a);
    	int i=0,j=0;
    	while(a[i]!='\0'){
    		while(a[i]>='0' && a[i]<='9'){
    			i++;
    		}
    		b[j++]=a[i++];
    	}
    	printf("str b:");
    	puts(b);
    	return 0;
    }

    展开全文
  • C语言删除字符串中的数字

    千次阅读 2020-12-23 20:23:00
    C语言删除字符串中的数字 #include<stdio.h> #include<string.h> int main() { int i,a,j; char s[1000]; gets(s); a=strlen(s); s[a+1]='\0'; for(i=0; s[i]!='\0'; i++) { if(s[i]<='9'&...

    C语言删除字符串中的数字

    #include<stdio.h>
    #include<string.h>
    int main() {
    	int i,a,j;
    	char s[1000];
    	gets(s);
    	a=strlen(s);
    	s[a+1]='\0';
    	for(i=0; s[i]!='\0'; i++) {
    		if(s[i]<='9'&&s[i]>='0') {
    			for(j=i; s[j]!='\0'; j++)
    				s[j]=s[j+1];
    			i--;
    		}
    	}
    	printf("%s",s);
    	return 0;
    }
    
    展开全文
  • c语言字符串1

    2021-01-12 23:42:39
    下一篇:c语言字符串2 字符数组 char word[]={'H','e','l','l','o','!'}; 这不是c语言的字符串,因为不能用字符串的方式做计算 如何定义字符串? char word[]={'H','e','l','l','o','\0'}; 这才是字符...

    目录

    字符数组

    字符串变量

    字符串输入输出

    下一篇:c语言字符串2


    字符数组

    char word[]={'H','e','l','l','o','!'};

    这不是c语言的字符串,因为不能用字符串的方式做计算

     

    如何定义字符串?

    char word[]={'H','e','l','l','o','\0'};

    这才是字符串,把单引号和\去掉也是一样的意思

    现在有了7个单元

    '\0'就是0

    字符串定义:

    1、以0(整数0)结尾的一串字符

    0或'\0'是一样的,但是和'0'不同,'0'是ASCII的一个字符,某些时候会强调是单引号里的0,因为单引号一定 是1个字节,而0是个int

    0标志字符串的结束,但它不是字符串的一部分

    计算字符串的长度的时候不包含这个0

    2、字符串以数组的形式存在,以数组或指针的形式访问

    更多的是以指针的形式

    3、string.h里有很多处理字符串的函数

     

    字符串的定义方式:

    char *str="Hello";//表示现在有一个字符指针str,指向了一个字符数组

    char word[]="Hello";//有一个字符数组里面的内容是Hello

    char line[10]="Hello";//有一个10个字节大小的字符数组,里面放了HelloHello加上结尾的0一共6个字节,结尾的0是编译器自动补的

    c语言中用双引号括起来的东西叫做字符串常量

    "Hello"这个东西会被编译器变成一个字符串数组放在某处,这个数组的长度是6,结尾有0

    这个东西在函数参数里面很常见:比如printf,scanf。。。

     

    两个相邻的字符串常常会被自定连接起来

    比如:

    printf("字符常量1""字符常量2");

    两个字符常量间第一个没有结束的" 第二个没有开始的" 使用反斜杠\连接起来

     printf("字符常量1,\

               字符常量2");

    这种方法有个缺点,他们中间的tab也会被显示出来,为了不显示table只能将第二个字符退格到行首

     

    总结:

    c语言表现出来懂字符串的标志:能识别双引号里的东西

    字符串变量

    上代码

    两个指针都指向了同内容的字符串常量"Hello World"

        char *s="Hello World";

        char *s2="Hello World";

        printf("s=%p\n",s);

        printf("s=%p\n",s2);

        return 0;

    结果他们指向的地址都是一样的

    我们再来看一个本地变量i的地址作为对比

    会发现本地变量i的地址很大和字符串常量的地址差了很远不在同一个区域

    这个地方的地址很小,位于程序的代码段,是只读的,

    如果试图写,操作系统的保护机制会使程序崩溃

    强行写的结果

    为什么会这样?

    因为:这个字符串是在编译时刻就已经有值的东西,所以放在一个只读的地方,并让指针指向,如果有两处相同的东西,那些指针就会指向同一个地方,不然会产生s1改变了值,而s该怎么办

     

    字符串常量:

    s是一个指针,初始化为指向一个字符串常量

    由于这个常量所在的地方,所以实际上sconst char* s,但是由于历史的原因,编译器接受不带const的写法

    但是试图对s所指的字符串做写入会导致严重的后果

     

    如果需要修改字符串,应该用数组

     

    char s[]="Hello,world!";//代表这个字符串就在我这里,之前用指针的是指针指向

    会把那段不可写的Hello World的内容拷贝到这个数组里

    #include <stdio.h>

    int main() {

        char *s="Hello World";

        char *s2="Hello World";

        char s3[]="Hello World";

        printf("s=%p\n",s);

        printf("s2=%p\n",s2);

        printf("s3=%p\n",s3);

        s3[0]='B';//修改值

        printf("Here!s3[0]=%c\n",s3[0]);

        return 0;

    }

    看到s3也在一个很大的地方,是一个本地变量

    那么怎么选?指针还是数组?

    数组:这个字符串在这里,作为本地变量空间自动被回收

    指针:这个字符串不知道在哪里

    就当做一个字符串,只读的字符串

    处理参数(因为数组和指针一样,不如就用指针)

    动态分配空间(如果字符串空间用malloc得到的)

    char*是字符串?

    字符串可以表达为char*的形式

    char*不一定是字符串,char*只是指向一个字节或者一串连续的字节

    本意是指向字符的指针,可能指向的是字符的数组(像int*一样)

    只有它所指的字符数组有结尾的0,才能说它所指的是字符串

    字符串输入输出

    字符串的赋值

    char *t="title";

    char *s=t;

    这段代码并没有创建一个新的字符串,而是让s指向了"title",对是做的任何操作都是对t做

    要创建一个新的字符串让s指向需要字符串函数,之后再讲

     

    字符串输入输出

    int main() {

      char string[8];

        scanf("%s",string);//这里是数组=指针=地址不用&

        printf("%s##\n",string);//这里两个#是输入边界测试

        return 0;

     

    }

     

    发现读到了第一个单词hello,没有包含空格,第二个单词没有读到,如果有第二个scanf就会读到word

    int main(){

    char word[8];

    char word2[8];

    scanf("%s",word);

    scanf("%s",word2);

    printf("%s##%s##\n",word,word2);

        return 0;  

    }

    会发现也不带空格,说明空格是用来区分输入的分隔符

    同样用回车也是

     

    注意:这个scanf是不安全的,因为不知道要读入的内容的长度

    现在给出超过8个字符的输入,则会出现数组越界

    解决办法:在百分号和s中间加一个数字,告诉scanf最多读7个字符,多的不要了

    scanf("%7s",word);

    可以看出第一个输入都读到了,第二个输出抛弃了8

    但是!如果第一个输入超出了7个字符,程序就会自动把多出来的给第二个输入

    这个%s间的数字应该比数组大小小

     

    常见错误

    char *string;//这是一个指针变量

    scanf("%s",string);//错误

    误以为char*是字符串类型,定义了一个字符串类型变量string就直接用了,由于没有对string初始化为0,所以不一定每次运行都出错

     

    空字符串

     

    展开全文
  • C语言去掉字符串中的数字

    千次阅读 2015-11-28 11:59:31
    输入一个字符串,去掉其中的数字字符
    //去掉一个字符串中的数字
    void deleteDigital(char *str){
        int length = (int)strlen(str);
        int i = 0;
        while(str[i] != '\0'){
            if(str[i] >= '0' && str[i] <= '9'){
                for(int j = i; j <</font> length; j++){
                    str[j] = str[j + 1];
                }
            }
            else{
                i++;
            }
        }
    }
        // 测试  结果:ac
    
        char str[] ="a23c";
        deleteDigital(str);
        printf("%s\n",str);


    为什么没有在返回的字符串后面添加'\0'终止符

       因为在移动字符覆盖前面的字符的时候小于的长度是length(标红的地方),所以每一回在移动字符的时候都会把字符串尾部的'\0'前移.


    展开全文
  • 文章目录 1.void CutSpace1(char* StrRes, char* StrDec) 2. int CutSpace2(char** StrRes,int* len) 3. void CutSpace3(char* StrRes) 4. void CutSpace4(char* StrRes) 1... } 参考文章:C语言——删除字符串中的空格
  • 1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号...
  • C语言字符串操作总结大全(超详细)

    万次阅读 多人点赞 2019-04-02 08:17:03
    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen§ 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略...
  • 如何将长字符串分割,即去掉其中的空格或逗号,使能够取出其中单个的字符串?(2)数字既能以字符串形式储存,也能以数值形式储存。把数字储存成字符串储存的就是数字字符,例如可以将213以‘2’、‘1’、‘3’、‘\...
  • C语言字符串数字字符全部删除

    千次阅读 2020-07-06 21:43:10
    不存储改变数组删除数字字符: #include <stdio.h> #define LENGTH 128 void del_digit(const char str[]) { int i = 0; while (str[i]) { if (str[i] < '0' || str[i] > '9') { putchar(str[i...
  • C语言实现去掉字符串中重复的字符

    千次阅读 2020-02-15 18:31:46
    写一个函数,去掉一个字符串中重复的字符,比如将"goole"转成"gole" char * str_uniq(char* str) { int i = 0; int j = 0; int k = 0; while(str[i] != '\0') { j = i + 1; while(str[j] != '\0') { ...
  • //传入要去除字符串 //传出以去除字符串 char* skipSpaceAtTheHead(char *str) { char *s=str,*p=str; if(str==NULL) return NULL; while(*s!='\0'&&*s==' ') s++;/*跳过开头的空格*/ while(*s!...
  • C语言字符串库函数详解

    千次阅读 多人点赞 2018-05-12 14:56:52
    1)字符串操作复制 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串增加 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串截取 strlen(p) 取字符串长度比较 s...
  • 2,把字符串数字等多个片段连接起来作为文件名。  char infor_filename[50];//++++++  char *fn;  char fn1[20];  char *p,*p1;//+++++  int len;//+++  // fn = input-&gt;infile ;  fn="...
  • c语言字符数组与字符串的使用详解

    万次阅读 多人点赞 2018-04-13 16:53:00
    转载自 https://blog.csdn.net/smf0504/article/details/516735291、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个...即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个...
  • 1、字符串转十六进制代码实现:voidStrToHex(char*pbDest,char*pbSrc,intnLen){charh1,h2;chars1,s2;inti;for(i=0;i{h1=pbSrc[2*i];h2=pbSrc[2*i+1];s1=toupper(h1)...
  • C语言 整数与字符串的相互转换

    万次阅读 多人点赞 2018-06-26 23:22:57
    C语言 整数与字符串的相互转换 一、简述  C语言中整数与字符串的相互转换,有广泛应用的拓展函数(非标准库),也可以自己尝试简单的实现。 二、整数转字符串  1、拓展函数itoa  itoa (表示 integer to ...
  • c语言字符串函数总结(超级全)

    千次阅读 2016-04-13 12:38:19
    1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat(p, p1) 附加字符串  strncat(p, p1, n) 附加指定长度字符串  strlen(p) 取字符串长度  strcmp(p, p1) 比较...
  • C语言 保留和删除字符串中的数字字符

    万次阅读 多人点赞 2019-01-21 23:59:43
    功能:保留字符串s中的数字字符 //保留数字 #include &amp;lt;stdio.h&amp;gt; #define N 100 int main(void) { char s[N]; int j,k; gets(s);//输入字符串 for(j=k=0;s[j]!='\0';j++) if(s[j]&...
  • 字符串内存图如下: 引入头文件: 1 #include<stdlib.h> 2 #include<stdio.h> 3 #include<string.h> 函数原型: 1 void trim(char *strIn /*in*/, char *strOut /*in*/); 实现方法一: ...
  • 从输入字符串中除去空格然后打印出 代码如下 #include"stdio.h" char p[50],*s=p-1; main(int_) { _ ? gets(p) , main(0) : *++s ^ 32 && putchar(*s) && main(0) || *s && main(0); } ....
  • 写在前面的话:在项目中遇到了对字符串进行处理的问题,发现自己之前对字符串的理解还是太浅了,但是基础还是特别重要的,所以在这里总结了关于字符串的一些基础知识,方便以后查阅,下文大部分都是从别人博客借鉴而...
  • c语言字符串处理函数

    2019-12-12 23:49:06
    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen§ 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略...
  • #include <stdio.h> void Del32(char* pstr) { char *p; p=pstr; while(*pstr) { if(*pstr != 32) //空格的ASCII为32 { *p=*pstr; p++; } pstr++; } *p='\0'; //这个很关键 ... .
  • 1 字符串转十六进制 代码实现: void StrToHex(char *pbDest, char *pbSrc, int nLen) { char h1,h2; char s1,s2; int i; for (i=0; i<nLen/2; i++) { h1 = pbSrc[2*i]; h2 = pbSrc[2*i+1]; s1 = ...
  • (1)字符串转化为整数,首先要判断正负数,复数的第一个字符为 '-' ,要将这一位去掉,并记录一个 flag = -1; (2)确定字符串长度,比如字符串 123 ,长度为3,最高位为百位,依次是十位,个位。转化为整数就是...
  • 去除字符串中的重复字符(C语言版)

    万次阅读 多人点赞 2018-08-15 22:40:53
    //连续输入字符串 for(i = 0;str[i] != '\0';i++); strlen = i; for(i = 0;i ;i ++) { for(j = i + 1;j ;j ++) { if(str[i] == str[j]) { for(k = j;k ;k ++) { str[k]=str[k + 1]; } strlen --; ...
  • "输入字符串: q退出\n" ); scanf( " %s " ,p); while ( *str != 'q' ){ //printf ( "进来了" ); int a =stringToInt(str); printf ( "转换: %d \n" ,a); //memset (str, 0 , 10 ); printf ( "输入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,702
精华内容 11,080
关键字:

c语言字符串去除数字

c语言 订阅