用C语言编写函数计算子字符串substr在主字符串mainstr中的索引值

在大小写敏感的前提下,用C语言编写函数计算子字符串substr在主字符串mainstr中的索引值。

如果substr完全包含在mainstr中,请计算出索引值。否则,返回-1.

具体代码如下:

findstr.c

/**

Author: snowdream <yanghui1986527@gmail.com>

Data: 2012.03.05

Description:
假设一个主要字符串“Hello World!”,和一个子字符串"World".
在大小写敏感的前提下,如果主字符串包含子字符串,请写出一个函数
计算出该子字符串在主字符串中的索引index。否则返回 -1 作为索引值。

*/

#include <stdio.h>

int findstr(char* substr,char* mainstr)
{
    int index = -1;

    for(int i = 0; *(mainstr+i)!='\0';i++)
    {
        for(int j = 0; *(substr+j)!='\0';j++)
        {
            if(*(substr+j) != *(mainstr+i+j))
                break;

            if(*(substr+j+1) =='\0' )
                index = i;
        }

       if(index != -1)
           break;
    }    

    return index;
}

int main()
{
    int index = -1;
    int index1 = -1;

    char* mainstr = "Hello World!";
    char* substr = "cctv";
    char* substr1 = "World";

    index = findstr(substr,mainstr);
    index1 = findstr(substr1,mainstr);

    printf("The index of %s in %s is: %d\n",substr,mainstr,index);
    printf("The index of %s in %s is: %d\n",substr1,mainstr,index1);

    return 0;
}

在ubuntu下编译运行:

snowdream@snowdream:~$ gcc findstr.c -std=gnu99 -o findstr -g
snowdream@snowdream:~$ ./findstr
The index of cctv in Hello World! is: -1
The index of World in Hello World! is: 6
时间: 2024-11-02 06:30:09

用C语言编写函数计算子字符串substr在主字符串mainstr中的索引值的相关文章

急求解决-用语言编写一个项目在vc2012下

问题描述 用语言编写一个项目在vc2012下 当创建一个项目后,打开cpp文件,会发现里面有很多已经自动有得代码,现在怎样看那些代码,以及怎样用它编一个贪吃蛇的游戏 解决方案 你要用C++写贪吃蛇的话,得先学C++.再看你是写控制台下的程序还是图形界面的程序.控制台的话纯C++就可以实现了:图形界面的话得用MFC或者Qt之类的第三方控件 解决方案二: c#的winform就可以写了,,主要是算法的问题,, 解决方案三: 我用C语言编写,创建后这是我看的视频教程中的代码,他是自动生成的,这些代码要

opengl-GLSL语言编写着色器时数组下标的问题

问题描述 GLSL语言编写着色器时数组下标的问题 在GLSL中,opengl红宝书第八版写的数组是列主序的,也就是第一个下标是列,第二个下标是行,但看到后边就感觉有点晕了,列主序是说存储时按列主序还是声明变量和访问数组元素是按列主序,比如,int a[4][3]在GLSL中是3行4列的数组还是4行3列的数组,之所以会有这样的疑惑,是因为看书是遇到这么几句话 mat2 m,u,v m=u*v //m={u00*v00+u01*v10 u00*v01+u01*v11 // u10*v00+u11*v

求解决-用while循环和if语句并且用c语言编写,求大神们指教

问题描述 用while循环和if语句并且用c语言编写,求大神们指教 /**输出21世纪中截止某个年份以来的所有闰年年份.注意:闰年的判别条件是该年年份能被4整除但不能被100整除.或者能被400整除. 输入格式: 输入在一行中给出21世纪的某个截止年份. 输出格式: 逐行输出满足条件的所有闰年年份,即每个年份占一行.输入若非21世纪的年份则输出"Invalid year!".若不存在任何闰年,则输出"None". 输入样例1: 2048 输出样例1: 2004 20

Viusla Basic 6..0 语言编写一个函数,把uncode字符串转换为utf-8字符串

问题描述 Viusla Basic 6..0 语言编写一个函数,把uncode字符串转换为utf-8字符串 Viusla Basic 6..0 语言编写一个函数,把uncode字符串转换为utf-8字符串 解决方案 dim e as object Set?e=CreateObject("MSScriptControl.ScriptControl") e.Language?=?"javascript" dim d as stringd=?e.Eval("en

c语言-C语言编写一个输出的函数

问题描述 C语言编写一个输出的函数 编写一个函数,输出数组,要求通过参数指定每行输出的元素个数,以 及每个元素占有的列数. 假设自己定义一个参数为x 那么打印的时候printf(""%xd"")怎么用一个参数来满足每次打印时候 元素所占列数的不同呢 解决方案 #include <stdio.h>void display(int data[] int n int cols int w){ for (int i = 0; i < n; i++) { p

c语言-求用C语言编写将“hello”这样的字符串转化为十六进制的代码实现

问题描述 求用C语言编写将"hello"这样的字符串转化为十六进制的代码实现 求用C语言编写将"hello"这样的字符串转化为十六进制的代码实现,急急急!!! 解决方案 #include<stdio.h> void main() { char str[]="abhello"; char *p=str; while(*p) { printf("%x ",*p++); } } 解决方案二: #include "

用c语言编写一个数组排序函数 要求如下

问题描述 用c语言编写一个数组排序函数 要求如下 1.既能从小到大也能从大到小 2.对int,unsigned int,const int,double 等类型数组都适用 3.尽量简洁 解决方案 参考系统函数qsort的实现.允许用户传一个比较函数指针.各种类型,按照大小排序,都由用户传这个比较函数实现.这样就通用了. 解决方案二: 你去搜,c 模板 排序,能搜到 解决方案三: 你是刚刚学习C语言么?你现在想要的是一段严格规范的代码,还是说一种编程的思路,又或者,只是为了应付一下某个任务?

c语言编写dll为postgresql添加自定义函数

问题描述 c语言编写dll为postgresql添加自定义函数 c语言编写dll为postgresql添加自定义函数,编译dll前,需要添加哪些路径呢??pg是64位的~~~ 解决方案 http://blog.csdn.net/iihero/article/details/8218753 解决方案二: 编译过程 要注意的是编译过程,需要添加头文件路径,lib路径,bin路径,以完成编译,这个include加了 lib路径也加了 附加依赖项加的postgres.lib ,编译出来的dll,放到PG

用Java编写函数反转字符串

如下所示,下面是两种反转字符串的方法. 实践过程中发现,如果是中文字符串,第二种反转方法会输出乱码. 因此,建议首选第一种方法. /** * 反转字符串 演示实例 * 假设有一个字符串 "ABCDEF",反转后,输出"FEDCBA" */ package com.reverse; /** * @author snowdream * * @since 2012.03.05 * */ public class StringReverse { /** * * Revers