C语言有没有把字符串拆分为数组的函数?

作者&投稿:萧尚 (若有异议请与网页底部的电邮联系)
c语言怎么把一个字符数组分成多个数组?~

可以使用strtok函数把一个字符数组分解成多个字符数组。
1、strtok函数:原型:char *strtok(char s[], const char *delim);功能:将一个字符串分解为一组字符串,s为要分解的字符串,delim为分隔符字符串;说明:当strtok函数在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针;头文件:string.h;返回值:从字符串s开头开始的一个个被分割的字符串。分割结束时,返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。2、例程:
#include#includeint main(){ char input[16]="abc,d,ef,g";//待分解字符串 char* delim=",";//分隔符字符串 char* p=strtok(input,delim);//第一次调用strtok while(p!=NULL){//当返回值不为NULL时,继续循环 printf("%s
",p);//输出分解的字符串 p=strtok(NULL,delim);//继续调用strtok,分解剩下的字符串 } return 0;}

本来就可以把它当成数组呀, 数组长度是strlen("01111100") 也就是8 .
假如这个字符串的名叫str, 可能通过str[0] ...str[7] 来访问这8个元素.

不知道你要问的是不是这个意思。

直接用简单的C++

#include <iostream>
#include <string>
#include <vector>
using namespace std;

//把字符串s按照字符串c进行切分得到vector_v 
vector<string> split(const string& s, const string& c){
vector<string> v;
int pos1=0,pos2;
while((pos2=s.find(c,pos1))!=-1){
v.push_back(s.substr(pos1, pos2-pos1));
     pos1 = pos2 + c.size();
   }
if(pos1 != s.length())
     v.push_back(s.substr(pos1));
return v;
}


int main()
{
string input="张三$|男$|济南$|大专学历$|";
vector<string>  myArray=split(input,"$|");
for(int i=0;i<myArray.size();i++){
cout<<myArray[i]<<endl;
}
}
/*
张三

济南
大专学历
*/


用strtok函数实现吧。
void split( char **arr, char *str, const char *del)//字符分割函数的简单定义和实现
{
char *s =NULL;

s=strtok(str,del);
while(s != NULL)
{
*arr++ = s;
s = strtok(NULL,del);
}
}

int main()
{
int i;
char *myArray[4];
char s[] = "张三$|男$|济南$|大专学历$|";

memset(myArray, 0x0, sizeof(myArray));
split(myArray, s, "$|");

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

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"

能说得再详细一点吗?


c语言中没有字符串类型,字符串是存放在什么中的呢?
C语言规定只能逐个引用数组元素,而不能一次引用整个数组。对于字符数组,可以将整个字符串一次输入或输出。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。C语言中没有字符串类型,字符串是存放在字符型数组中的。

为什么C语言不能像c++一样直接操作字符串?
C语言中没有字符串类型,字符串是存放在字符型数组中的。在C语言中,是将字符串作为字符数组来处理的。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符'\\0'作为结束标志 。在C语言中,scanf("%s",a)形式的输入函数可以对字符串进行整体的输入。printf("%s",a)形式的输出函...

C语言中字符串是怎么赋值的?
在C语言中,字符串的赋值主要有两种方法,第一种是通过指针的方式直接赋值,第二种是通过数组直接赋值。1、指针式赋值。通过程序的运行情况,可以知道:char *p = "hello";这种字符串的赋值方式是完全没有问题的。要理解这种赋值方式,首先得理解双引号(特别注意:这个是双引号,不要赋值的时候给弄了...

C语言里如何把已有的字符串写入文件里?
设要写入的数字是int型,则用控制字符串%d和%s来完成,举例代码行如下:fprintf(fp,"%d %s\\n",12345,"abcdefg");其中:fp是成功写打开文件的指针。此代码行先向文件写入整型数字12345,再加一个空格,接着写入字符串abcdefg,然后写入'\\n'。include "stdio.h"#include "string.h"void main(){ch...

c语言字符串处理函数有哪些
一般的形式:strcat(字符数组1,字符数组2);作用:把两个字符串数组中字符串连接起来,把字符串2连接到字符串1的后面。说明:字符数组1必须足够大,以便容纳连接后的新字符串。4、strcpy\/strncpy函数——字符串复制函数 一般形式:strcpy(字符数组1,字符串2);作用:将字符串2复制到字符数组1中去。如...

C语言中有string吗?
C语言中没有string类型。string类型是 C++、java、VB等编程语言中的。 在java、C#中,String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。string 是C++标准程序库中的一个头文件,定义了C++标准中的字符串的基本模板类std::basic_string及相关的模板类实例。而在C语言中,C...

c语言中字符数组中最后为什么必须为\\0?
C语言中没有字符串类型,字符串是存放在字符型数组中的。在C语言中,是将字符串作为字符数组来处理的。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符'\\0'作为结束标志 。例如:char a[8]={'i','l','o','v','e','y','o','u'};把8个字符依次分别赋给...

C语言中输入字符串,里面有空格,怎么根据空格把字符串分开,并存在数组里...
程序源码如下:include<stdio.h> include<string.h> int main(void){ char str[1000];\/\/定义一个字符串数组 char strnew[1000];\/\/定义一个备用字符串数组 char m[] = " ";\/\/定义空格变量 printf("请输入一串字符:");\/\/文字提示输入字符串 gets(str);\/\/输入字符串 char *p = strtok(...

C语言的字符串为什么以0作为它的结尾?
在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。字符串总是以'\\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符 '\\0'存入数组,并以此作为该字符串是否结束的标志。有了'\\0'标志后,就不必再用字符数组的长度来判断字符串的长度了。

c语言输入字符串的方法有哪些?
c语言从键盘输入字符串的步骤如下:1.首先我们新建一个dev C++的项目。2.接下来在项目中新建C语言程序文件。3.然后在C语言文件中声明一个字节数组。4.接下来我们通过printf函数提示用户输入字符串,通过scanf接收用户输入的字符串。5.接着在通过printf函数输出用户输入的内容。6.最后运行C语言程序,我们...

沁水县13019296276: C语言有没有把字符串拆分为数组的函数? -
辛邢康尔: 用strtok函数实现吧.void split( char **arr, char *str, const char *del)//字符分割函数的简单定义和实现 { char *s =NULL;s=strtok(str,del); while(s != NULL) { *arr++ = s; s = strtok(NULL,del); } } int main() { int i; char *myArray[4]; char s[] = "张三$|男$|...

沁水县13019296276: C语言函数字符串截取分割 -
辛邢康尔: C标准库中提供了一个字符串分割函数strtok(); 实现代码如下: #include <stdio.h> #include <string.h> #define MAXSIZE 1024 int main(int argc, char * argv[]) {char dates[MAXSIZE] = "$GPGGA,045950.00,A,3958.46258,N,11620.55662,E,0....

沁水县13019296276: C语言 写一个把一个字符串分成若干个数组 -
辛邢康尔: #include char **lengthSplit(const char *s, int n,int *m) { int i,j; char **lens; if(strlen(s)%n == 0) *m = strlen(s)/n; else *m = strlen(s)/n + 1; lens = (char **)malloc(*m); for(i = 0; ilens[i] = (char *)malloc(n + 1);for(i = 0; ifor(j = 0; jlens[i][j] = s[j + i * n]; lens[i]...

沁水县13019296276: 怎么样把一个字符串分割成单个字符数组 -
辛邢康尔: 不需要专门分割,C语言里面本来就是抄用字符数组来保存的,如:袭char a[20]="Hello world!";这个字符串,char[0]就是H,char[1]就是e. 如果要分割子串,可以使用strtok函数. char *strtok(char *s, char *delim); 分解2113字符串为一组字符串.s为要分解的字符串,delim为分隔5261符字符串. 首次调用时,s指向要分解的字符串,之后再次调用要把s设成4102NULL. strtok在1653s中查找包含在delim中的字符并用NULL('')来替换,直到找遍整个字符串.

沁水县13019296276: c语言,怎么把这样一个字符串"01111100"分割成数组 -
辛邢康尔: 本来就可以把它当成数组呀, 数组长度是strlen("01111100") 也就是8 .假如这个字符串的名叫str, 可能通过str[0] ...str[7] 来访问这8个元素.不知道你要问的是不是这个意思.

沁水县13019296276: c语言自己编写一个split字符串分割函数 -
辛邢康尔: 这个是用c++写的不过和c的原理也差不多我运行过了,有什么问题再问吧,c不知道能否运行,不过现在c/c++程序设计试验系统通常都有嵌套c++,你打开c界面时单击vc6.0创建一个项目运行就可以了.#include <iostream> using namespace std;...

沁水县13019296276: C语言如何实现分割字符串为一个个单独的字符并保存 -
辛邢康尔: 太简单了,C语言里面本来就是用字符数组来保存的,如:char a[20]="Hello world!"这样的话,其实本来就是分开的,char[0]就是H,char[1]就是e ,....都是这样的

沁水县13019296276: 如何把一个字符串分割成一个数组!我忘了方法 55 -
辛邢康尔: JAVA: char[] ch = str.toCharArray(); C#: char[] ch = str.ToCharArray();

沁水县13019296276: c语言:如何把字符串分解为一个个的字符? -
辛邢康尔: 直接从字符数组中提取就可以啦!例如:char a[10]="abcd";那么,从a[0]到a[3]分别是'a','b','c','d'四个字符.

沁水县13019296276: C语言里有没有字符串组成的数组? -
辛邢康尔: C语言字符串的本质是:以0值结尾的一块内存,用这块内存的首地址来代表这块内存 那就可以用一些char指针指向字符串所在内存的首地址,然后把这些char指针放到一个数组里#include <stdio.h> int main() { char* ss[3]; //这个数组的元素是char指针(char*) int i; ss[0]="abcdefg"; //ss[0]指向保存"abcdefg"这个字符串的内存的首地址 ss[1]="1234567"; ss[2]="@#$%^&*"; for(i=0;i<3;i++) { printf("%s\n",ss[i]); } return 0; }

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网