
例子如下:
直接编译,程序输出结果中任意输入字符串和数字,程序执行结果如下图所示:
扩展资料:
字符串或串(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;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)