精华内容
下载资源
问答
  • //盗墓者是个丑奴儿,原 //查找字符串中有多少个字符a,统计返回 int cindex_a(char * c){  int index =0;  for(int i=0;i<strlen(c);i++){  if(c[i]=='a'){  index++;  ...

    //盗墓者是个丑奴儿,原

    //查找字符串中有多少个字符a,统计返回

    int cindex_a(char * c){

            int index =0;
            for(int i=0;i<strlen(c);i++){
                    if(c[i]=='a'){
                            index++;
                    }
            }
            return index;
    }


    int main(void){
            char * a="asdajkshdjkdshajkfhsdalfhjklsdahfjkshdajkfhsadjk";

            int b=cindex_a(a);
            printf("%d \n",b);

            return 0;

    }

     

    调用函数返回结果:

    展开全文
  • C语言基于字符的计算

    2021-05-08 09:38:08
    我们知道float类型是有一个精确度,并不是有多少个小数位都能精确计算;即便换成double类型,也只能说精确度提升了,但仍然不能说完全准确。很多人怕麻烦,干脆所有小数都尽量扩大成整型计算。但整型Int有一个数据...

    我们经常使用C语言来计算算式,甚至直接使用它来设计计算器。在这个过程中,不可避免的遇到一个问题,就是C语言数据类型对计算的限制。我们知道float类型是有一个精确度的,并不是有多少个小数位都能精确计算;即便换成double类型,也只能说精确度提升了,但仍然不能说完全准确。很多人怕麻烦,干脆所有小数都尽量扩大成整型计算。但整型Int有一个数据范围大小,太大的数字无法处理。所以基于字符的计算应运而生,它是把数字以字符串的形式存放,处理后的结果也是字符串,以字符串为载体进行运算。而字符串的长度,是可以定义的,理论上只要内存够用,定义多少都不碍事。所以基于字符的计算器解决了C语言基本数据类型对计算的限制。

    那么究竟如何设计程序,实现字符的基本运算(加,减,乘,除)呢?

    回想小学时候计算加法,那时候没有计算器,是使用竖式计算的。把两个操作数写在纸上,然后按位相加,超10进位。如果是整数,把两个操作数从最低位对齐相加。但如果是小数,那需要把两个操作数从小数点对齐。特别的,如果是减法的话,只能大数字减去小数字,其他形式都要处理成这样才能算。如果是乘法和除法,需要先把小数位去掉,计算好的结果再加上小数位。足以可见,真正令人头疼的不是计算数位,而是不同情况下字符串的对齐处理。其中还要考虑正负号。

    为了方便处理,我们必须把一个操作数规范起来。用一个结构体opa_num表示它。一个具体的数字,比如"-123.456",需要被切割成opa_num的各个成员,才方便以后处理。

    typedef struct opa_num

    {

        char sign;                      //操作数正负号

        char int_num[OPA_NUM_LEN];      //操作数整数部分

        char float_num[OPA_NUM_LEN];    //操作数小数部分

        char num_no_point[OPA_NUM_LEN*2]; //不带小数点的操作数

        int index_point;                //小数点在操作数中的位置

    }opa_num;

     

    此外,我们还需要对数字的字符串制定一些规范。并且还要实现一个函数,对数字字符串进行"规范化"处理。

    1.正数不带符号前缀,比如"123.456"。负数带符号前缀,"-123.456"

    2.不能有无效的0.比如"001203.045600",标红的字符不合法,应该去除。

    3.不允许存在空格等其他无意义的字符。

     

    设计一个函数,用于把字符串处理成这个结构体变量。这样做之后,我们以后就使用这个结构体变量进行计算操作。

    void num_split(char *num_str,opa_num* st_opa_num)

    用这个结构体变量就要好操作得多了。正负号、整数小数一目了然。使用这样的变量有利于之后进行程序设计。

    首先要设计两个数值比较大小的函数。两个数比较大小,先比整数再比小数。从高位向低位比。等于返回0,小于返回-1,大于返回1。

    int num_compare(opa_num* st_opa_num1, opa_num* st_opa_num2)

     

     

     

     

     

     

     

    展开全文
  • 但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动。每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,既累人又容易出错。感概技术学得不够全面啊!这里引用一段...
  • C语言的字符串分割

    2018-07-21 11:34:58
    说起来很有意思,自认为对C语言理解得还是比较深刻。但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动。每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,
    原文地址为:C语言的字符串分割

    说起来很有意思,自认为对C语言理解得还是比较深刻的。但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动。每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,既累人又容易出错。感概继续学得不够全面啊!这里引用一段strtok用法:

    The strtok() function returns a pointer to the next "token" in str1, where str2 contains the delimiters that determine the token. strtok() returns NULL if no token is found. In order to convert a string to tokens, the first call to strtok() should have str1 point to the string to be tokenized. All calls after this should have str1 beNULL.

    For example:

       char str[] = "now # is the time for all # good men to come to the # aid of their country";
       
    char delims[] = "#";
       
    char *result = NULL;
       result 
    = strtok( str, delims );
       
    while( result != NULL ) {
           printf
    ( "result is \"%s\"\n", result );
           result 
    = strtok( NULL, delims );
       
    }            

    The above code will display the following output:

      result is "now "
       result 
    is " is the time for all "
       result 
    is " good men to come to the "
       result 
    is " aid of their country"
    这个函数跟编译器中的词法分析很向,在以后的文本处理中,会解决很多问题。看来我有必要系统的学习下C的库函数,而不仅仅是死扎在语法和一些算法技巧上面。这样在平常的工作中才能事半功倍。
    使用这个函数,形如下面得配置文件就非常容易解析:
    id1 value1 value2 value3
    id2 value1 value2 value3
    ...
    使用这个函数,分割字符串就更加方便了,例如下面待分割的字符串:
    12|2345|asld|alsfalskd
    只要读取待处理的数据,然后调用四次strtok就能够解析出每行的值,以前我一般不是自己解析就是用sscanf,但是strtok更加合适,也更加啊灵活!

    转载请注明本文地址:C语言的字符串分割
    展开全文
  • 输入一行字符,统计其中有多少个单词 第一次优化: 发现报错,于是思考这一类问题常用解决方法是什么?是这种形式: //输入一行字符,统计其中有多少个单词 #include&lt;stdio.h&gt; #include&lt;...

    输入一行字符,统计其中有多少个单词
    在这里插入图片描述
    第一次优化:
    在这里插入图片描述
    发现报错,于是思考这一类问题的常用解决方法是什么?是这种形式的:

    //输入一行字符,统计其中有多少个单词
    #include<stdio.h>
    #include<string.h>
    main() 
    {   char string[81]; 
        int i,num=0,word=0; 
        char c; 
        gets(string); 
        for(i=0;(c=string[i])!='\0';i++) 
           if(c==' ')  word=0; 
           else if(word==0) 
           {   word=1;  num++;   } 
        printf("There are %d words ",num); 
    }
    

    算法图解如下:
    在这里插入图片描述
    有三个字符串,找出其中最大者
    例如
    在这里插入图片描述

    #include <stdio.h> 
    #include <string.h> 
    main() 
    {   char string[20],str[3][20]; 
        int i; 
        for(i=0;i<3;i++) 
        gets(str[i]); 
        if(strcmp(str[0],str[1])>0) 
    	strcpy(string,str[0]); 
        else 
           strcpy(string,str[1]); 
        if(strcmp(str[2],string)>0) 
    	strcpy(string,str[2]); 
        printf("The largest string is:%s",string); 
    }
    

    结果也不尽人意,原因在哪??? 欢迎留言!!!
    在这里插入图片描述

    展开全文
  • c语言的字符串分割

    2013-05-07 16:22:02
    但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动。每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,既累人又容易出错。感概继续学得不够全面啊!这里引用一段...
  • 如果出现次数最高大写字母,则输出ASCII码值最小字母及其次数。 以下是我写代码但是运行得不出我想要结果。 <code>#include<stdio.h> int main() { char a; int c[26] = { 0 }; ...
  • 要求:输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 这里我本来想用笨方法判断单词位置,参考答案之后,发现方法比较精妙。 直接上代码: #include <stdio.h> int main() { char c[50...
  •  其中,字符串切割函数Split(类似C#、Java中String对象split函数,故此称之),会经常用到,但是C语言中并没有该函数,只是基本切割函数strtok实现切割功能,但是不太好用。  现在就根据这...
  • 但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动。每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,既累人又容易出错。感概继续学得不够全面啊!这里引用一段...
  • C语言实现合并字符

    2020-12-23 04:47:34
    学会Perl以及Python之后,处理字符串...其实,在接触操作系统时候我对这函数多少有一点认识。那就是这函数在实现屏显时候比printf更为底层,而且可以直接操作内存。那么,使用这函数进行字符拼接应该如何
  • 编一个程序,读入用户输入,以“.”结尾一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。 (凡是以一个或多个空格隔开部分就为一个单词)
  • 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。解:如果测出某一个字符为非空格,而它前面的字符是空格,则表示新单词开始了,用变量word作为判别当前是否开始了一个新单词的标志,word=0,未出现新...
  • 思路:我们需要把空格替换成“%20”即相当于把一个字符替换成了三个字符,所以数组长度发生了变化,所以我们需要先计算出字符串中有多少空格,然后对字符数组进行扩容,然后再对空格进行替换。 下面复制粘贴我...
  • 这是我写代码为啥运行不出结果 ``` #include<stdio.h> int main() { char c[100];int j=1;int i; gets(c); for(i=0;;i++) if(('a'[i]&&c[i])||('A'[i]&&c[i])) break; for(;;i++) {if(c[i]==' ') j++; ...
  • C语言有多少关键字?

    千次阅读 2018-08-04 14:17:52
    当被问到C语言中有多少关键字时,很多老铁,都会说32,但是,其实你说说的不对,因为没有加前提! C语言的32关键字:(C99版本中,记住要说前提哦,很重要的!!!) 1.存储类型关键字(4) auto:自动...
  • C语言中统计一个字符串单词个数

    千次阅读 2018-08-08 21:16:16
    Q:输入一串字符串,输出其中有多少个单词。 Eg:Good Wishes A: #include &lt;stdio.h&gt; #include &lt;string.h&gt; #define SIZE 20 int main() { char str[SIZE]={'\0'}; int count=0; ...
  • 谭浩强版《C程序设计》第五版 第八章习题第16题 原题: 输入一个字符串,内...例如,123存放在a[0],456放在a[1]中…统计共有多少个整数,并输出这些数。 #include<stdio.h> int main() { char str[50],...
  • //memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer为指针或是数组,c是赋给buffer的值,count是buffer的长度.Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串...
  • C语言——计算输入的字符串的长度

    万次阅读 2018-03-31 09:59:10
    计算长度有两个函数:strlen sizeof strlen 计算字符串里面一共有多少个字符sizeof 计算字符串占总内存空间如:char str[20]={"123456"}; strlen(str);等于 6sizeof(str); 等于20 #include &lt;...
  • 本题要求实现一函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。 函数接口定义: void StringCount( char *s ); 其中 char s 是用户传入的字符串。函数StringCount须在一行内按照...
  • C语言 字符串长度

    千次阅读 2016-02-27 13:05:28
    计算长度有两个函数:strlen sizeof  strlen 计算字符串里面一共有多少个字符 sizeof 计算字符串占总内存空间 如: char str[20]={"123456"};  strlen(str);等于 6 sizeof(str); 等于20
  • 输入一个字符串,内数字和非数字字符.将其中连续数字作为一个整数,依次存放到一数组中......统计共有多少个这样整数,并输出这些数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 416
精华内容 166
关键字:

c语言的字符有多少个

c语言 订阅