C语言截取字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言截取字符串相关的知识,希望对你有一定的参考价值。

求助如何字符串<1,2>,<3,4>,<4,5>中的'<' '>' ','去掉只留下数字存入int类型的数组中?谢谢!!!

这个你只能写个循环自己判断了,示例代码如下

char str[] = "<1,2>,<3,4>,<4,5>";
int num[10];
int index = 0;
int i;
for(i=0;i<strlen(str);i++)

    if(str[i]>=\'0\' && str[i]<=\'9\')        //如果是字符 0-9
        num[index++] = str[i] - \'0\';        //字符转换为数字,放到int类型的数组
追问

如果是的话没法转化成11的

参考技术A #include <ctype.h>
#include <stdio.h>
int databuf[256];
int split_int(char *str)//字符筛选函数

int count=0;
while(*str!=0)
    
    if(isalnum(*str)) 
        databuf[count]=*str-'0';
        count++;
        str++;
        
    else
        
        str++;
        
     
    return count;    

int main(void)

    char str[]="<1,2>,<3,4>,<5,6>,<7,8>";
    int i,j;
    j=split_int(str);
    for(i=0;i<j;i++)
        printf("%d=%d\\n",i,databuf[i]);
    return 0;
    

追问

如果是的话是不好用的

追答

/*  */


#include "Stdio.h"

#include "Conio.h"

int databuf[256];

typedef enumFALSE,TRUE BOOL;

int split_int(char *str)

    BOOL bStartNum=FALSE;/*标记数字开始*/

    BOOL bEndNum=FALSE; /*标记数字结束*/

    int tmp;

    int count=0;

    while(*str>0)

   

        if(*str>='0'&&*str<='9')

           

                if(bStartNum==FALSE)

                    bStartNum=TRUE;

                     bEndNum=FALSE;

                     tmp=*str-'0';

                     

                else

                    tmp=tmp*10+*str-'0';

               

         else

           

                bEndNum=TRUE;

         if(bStartNum==TRUE&&bEndNum==TRUE)

           

                databuf[count]=tmp;

                bStartNum=FALSE;

                count++;

         str++;

       

        return count;

   


int main(void)

    char str[]="<1,2>,<3,4>,<5,6>,<7,8>,<11,11>,<123,234>";

    int i,j;

    j=split_int(str);

    for(i=0;i<j;i++)

        printf("%d=%d\\n",i,databuf[i]);

 /* 此处添加你自己的代码 */

  getch();

  return 0;


    

参考技术B Cstring
str
=
"a
char:<abcdefgh>";
Cstring
m_First,m_second;
sscanf_s(str,
"%s<%s>",
&m_First,
&m_second);
大概就是这种意思。下面是百度百科里面关于sscanf的用法,你可以参考一下,很强大的。

C语言截取字符串将大写字母转换为小写字母。

将被操作字符串中的指定大写字母后的所有字母截取出来,将截取出来的所有字母转换为小写字母,将此字符串写入原来被操作字符串的地址中。
函数原型
int trans(char *str, char ch);
参数说明
str 为被操作的字符串首地址,字符串的元素全为大写字母;最终将转换好的字符串写入此地址中。
ch 为指定的大写字母,此大写字母在str中只出现一次;
返回值
0 操作成功,正常返回;
1 str为空,即str==NULL
比如:字符串”WEIWENDATA” 在字符’N’之后的的字符串为” DATA”;转换后的字符串”data”。

参考技术A #include<stdio.h>
#include<string.h>
#include<math.h>

int trans(char *str, char ch)

int lon,i;
lon=strlen(str);
for(i=0;i<lon;i++)

if(str[i]==ch)

break;


i++;
for(;i<lon;i++)

str[i]+=32;


return 0;


int main(int argc,char *argv)

char str[20];
char ch;

printf("请输入你要输入的字符串:\n");
scanf("%s",str);
getchar();
printf("请输入你要转换的字母:\n");
scanf("%c",&ch);
trans(str, ch);
printf("最终结果是:\n");
printf("%s\n",str);
return 0;
参考技术B int trans(char *str, char ch)


int i, j;
for(i=0;*(str+i)!='\0';i++)

if(*(str+i)==ch)
break;

if(*(str+i)=='\0')

*str='\0';
return 1;

for(j=0,i=i+1;*(str+i)!='\0';i++,j++)

str[j]=*(str+i)-('A'-'a');

return 0;
追问

第二个for循环就是第16行做出来说少一个)在;之前。实在不知道怎么改呀。。

追答

你把我代码拷贝过去编的?

我这里可以啊。

追问

对呀。直接拷贝过去的。不知道怎么回事。。

追答

你再仔细检查一下,是不是少个括号分号什么的。

本回答被提问者和网友采纳
参考技术C 是要我们写程序吗?问题是什么?追问

对呀,问题是题目哦,

以上是关于C语言截取字符串的主要内容,如果未能解决你的问题,请参考以下文章

C语言中如何截取字符串的前几个字符?

c语言截取下载url中文件名称

C 语言中怎么截取字符串的一部分

C语言截取字符串的第一个字符

C语言截取字符串的第一个字符

c语言中怎样截取一个字符串的最后一个字符?