c语言截取字符串中的一部分

c语言截取字符串中的一部分,第1张

例子如下:

直接编译,程序输出结果中任意输入字符和数字,程序执行结果如下图所示:

扩展资料:

字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。

通常以串的整体作为 *** 作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

//以下解法的前提是,先把所有环变成1无环路,2一个环没有扣住3个及以上的其他环

void main(){

int array[16] = {0};

//init, array[1] = xxx;根据输入初始化数组,如1-2,则,array[1] = 2,

int HashArray[16] = {0};

int head, tail;

int head_tmp, tail_tmp;

getNextList(array, HashArray, head, tail);

 

while(getNextList(array, HashArray, head_tmp, tail_tmp))

{

    array[tail] = head_tmp;

    tail = tail_tmp;

}

//此时的array数组里面应该是一条链了

}

 

getNextList(int array[], int Hasharray, int & head, int & tail)

{

    int head_tmp = 1;

    while(Hasharray[head_tmp++] != 0);

    if (head_tmp == 16)

        return false;

    else

    {

        head = tail = head_tmp - 1;

        while(array[tail] != 0)

        {

            Hasharray[tail] = 1;

            tail++;

         }

         Hasharray[tail] = 1;

         return true;

     }

}

C/C++中的Split函数是strtok()其函数原型如下:

char strtok (char str, const char delimiters);

函数说明

strtok()用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数delimiters则为分割字符串,当strtok()在参数str的字符串中发现到参数delimiters的分割字符时则会将该字符改为'\0'字符。在第一次调用时,strtok()必需给予参数str字符串,往后的调用则将参数str设置成NULL。每次调用成功则返回下一个分割后的字符串指针。

返回值

返回下一个分割后的字符串指针,如果已无从分割则返回NULL。

示例-1

/ strtok example /

#include <stdioh>

#include <stringh>

int main ()

{

char str[] ="a,b,c,de";

const char split = ",";

char p;

p = strtok (str,split);

while(p!=NULL) {

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

p = strtok(NULL,split);

}

getchar();

return 0;

}

本例中,实现对字符串'a,b,c,de"用逗号(,)来作界定符对字符串进行分割。

输出结果将如下所示:

a

b

c

de

因为delimiters支持多个分割符, 我们将本示例中的语句行

const char split = ",";

改成 const char split = ","; //用逗号(,)和星号()对字符串进行分割

这样输出结果将如下所示:

a

b

c

d

e

c语言中没有 string class, 假定你指 char 字符串。

用 sscanf 方法可以分割。

char str2[]="aa 123,bb 456,cc 789,dd 000";

按逗号分割为4 部分:

aa 123

bb 456

cc 789

dd 000

-----------------

char str[]="aa,bb,cc,dd";

按逗号分割为4 部分:

aa

bb

cc

dd

-------------------------

#include <stdioh>

main()

{

char str[]="aa,bb,cc,dd";

char str2[]="aa 123,bb 456,cc 789,dd 000";

char s[4][10];

int i;

sscanf(str,"%[^,],%[^,],%[^,],%[^,]",s[0],s[1],s[2],s[3]); // 第1种方法

for (i=0;i<4;i++) printf("%s\n",s[i]);

sscanf(str2,"%[^,],%[^,],%[^,],%[^,]",s[0],s[1],s[2],s[3]); // 第1种方法

for (i=0;i<4;i++) printf("%s\n",s[i]);

//-----------

for (i=0;i<strlen(str);i++) if (str[i]==',') str[i]=' '; // 第2种方法--替换成空格分隔

sscanf(str,"%s %s %s %s",s[0],s[1],s[2],s[3]);

for (i=0;i<4;i++) printf("%s\n",s[i]);

return 0;

}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12157608.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存