C语言中,读取字符串中的一个位置

比如我有一个字符串 234ed5ab
我想要 读取"e"这个字符,然后printf出来
或者是连续的字符"4ed"。。。同样

怎么做到

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

/**

*查找字符串首次出现的位置

*

*charneedle[]="name";

*charhaystack[]="mynameiszhangwoods";

*printf("strpospositionis:%d",strpos(haystack,needle));

*

*@paramhaystack在该字符串中进行查找

*@paramneedle要查找的字符串

*@return返回needle存在于haystack字符串起始的位置-1代表未找到

*/

intstrpos(constchar*haystack,constchar*needle)

{

intn,p=0;

if(*haystack&&*needle)

{

while(*haystack)

{

for(n=0;*(haystack+n)==*(needle+n);n++)

{

if(!*(needle+n+1))

{

returnp;

}

}

p++;

haystack++;

}

}

return-1;

}

intmain(void)

{

charneedle[]="name";

charhaystack[]="mynameiszhangnamewoods";

printf("data:%d",strpos(haystack,needle));

return0;

}

扩展资料

C语言读取主字符串中指定的字符串

#include<stdio.h>

#include<string.h>

intmain()

{

charstr[100];

sscanf("2737237:348384122","%*[^:]:%[^\n]",str);//使用正则表达式:从:开始读取到最后

printf("%s\n",str);

return0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-24

#include <stdio.h>

int fun(char *s)

{

char t[80];

int i, j;

for(i=0; s[i]; i++) /*将串s拷贝至串t*/

t[i]=s[i];

t[i]='\0';

for(i=0,j=0; t[i]; i++)

/*对于数字字符先写一个$符号,再写该数字字符*/

if(t[i]>='0' && t[i]<='9')

{

s[j++]='$';

s[j++]=t[i];

}

/*对于非数字字符原样写入串s*/

else

s[j++]=t[i];

s[j]='\0'; /*在串s结尾加结束标志*/

return 0;

}

int main()

{

char s[80];

printf ( "Enter a string:" );

scanf ("%s", s); /*输入字符串*/

fun(s);

printf ("The result: %s\n", s); /*输出结果*/

return 0;

}

运行结果:

Enter a string:A1B23CD45

The result: A$1B$2$3CD$4$5

扩展资料

1、字符串是由若干有效字符构成且以字符'\0'作为结束标志的一个字符序列。、

2、字符串常量是用一对双引号括起来的一串字符,如“happy”。其中'\0'作为字符串的结束标志,在这里可不显式输出,C编译程序自动在其尾部自动添加字符'\0'。

3、C语言中只提供了字符数据类型,没有提供字符串数据类型,C语言中的字符串是通过字符数据来实现的,所有表示字符串的字符数组的最后一个元素都是空字符(ASCII 码值为0的字符'\0')。

本回答被网友采纳
第2个回答  2020-12-27

C语言字符串的学习,输入指定字符串,并且计算字符串的位数

第3个回答  推荐于2017-09-25

    先将所有的读进来存在一个字符串中,然后用字符分割函数strtok()
    原型:char *strtok(char s[], const char *delim);
    功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串;
    例如:strtok("abc,def,ghi",","),最后可以分割成为abc def ghi.尤其在点分十进制的IP中提取应用较多;
    说明:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针;
    返回值:从s开头开始的一个个被分割的串。当查找不到delim中的字符时,返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。

    例如

  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 );//返回下一次分割的字符串
    }
以上代码的运行结果是:
   result is "now "
    result is " is the time for all "
    result is " good men to come to the "
    result is " aid of their country"

第4个回答  推荐于2017-09-07
#include<stdio.h>
#define N 1000
main()
{
int i,begin,end;
char str[N];
scanf("%s",str); /*输入字符串*/
scanf("%d %d",&begin,&end); /*输入要读取的起始位置*/
for(i=begin-1;i<end;i++)
printf("%c",str[i]);
printf("\n");
}
例如 输入:234ed5ab
输入:4 4
输出:e
输入:234ed5ab
输入:3 5
输出:4ed本回答被提问者采纳
相似回答