C语言以逗号分割字符串

 我来答
小星星教育知识分享
高粉答主

2019-11-26 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67136

向TA提问 私信TA
展开全部

#include<iostream>

#include<vector>

#include<sstream>

usingnamespacestd;

intmain()

{

strings;

vector<int>v;

cin>>s;

//将读入的字符串转化成is流

istringstreamis(s);

intinter;

charch;

while(is>>inter)//只能读出is流中的一个整形读进inter

{

v.push_back(inter);

is>>ch;//然后读一个字符型读进ch

}

for(inti=0;i<v.size();i++)

cout<<v[i]<<"";

cout<<endl;

return0;

}

扩展资料

C语言的字符串按照指定字符串分割操作

#include<stdio.h>

#pragmawarning(disable:4996)

#include<stdlib.h>

intmain()

{

charstr[]="我,是,中国,程序员";

char*ptr;

char*p;

printf("开始前:str=%s\n",str);

printf("开始分割:\n");

ptr=strtok(str,",");

while(ptr!=NULL){

printf("ptr=%s\n",ptr);

ptr=strtok(NULL,",");

}

getchar();

}

kevin_sxw
2017-08-21 · TA获得超过165个赞
知道小有建树答主
回答量:80
采纳率:0%
帮助的人:36.1万
展开全部

C语言中要分割以逗号分隔的各个子串可以使用strtok()函数,函数原型:

char* strtok (char* str,constchar* delimiters );

函数功能:
切割字符串,将str切分成一个个子串 
函数参数:
str:在第一次被调用的时间str是传入需要被切割字符串的首地址;在后面调用的时间传入NULL。
delimiters:表示切割字符串(字符串中每个字符都会 当作分割符)。 
函数返回值:
当s中的字符查找到末尾时,返回NULL;
如果查不到delimiter所标示的字符,则返回当前strtok的字符串的指针。

参考代码:

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    char test_str[] = "this,is,a,,,test";
    char *ptr,*retptr;
    int i=0;

    ptr = test_str;

    while ((retptr=strtok(ptr, ",")) != NULL) {
        printf("substr[%d]:%s\n", i++, retptr);
        ptr = NULL;
    }

    return 0;
}

运行结果:

注意,strtok()函数非线程安全函数,在多线程环境下可以使用strtok_r()代替,函数原型:

char *strtok_r(char *str, const char *delim, char **saveptr);

使用方法类似,只需要多定义一个字符指针,在每次调用前作为参数传递其地址即可,参考代码:

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    char test_str[] = "this,is,a,,,test";
    char *ptr,*retptr,*savestr;
    int i=0;

    ptr = test_str;

    while ((retptr=strtok(ptr, ",", &savestr)) != NULL) {
        printf("substr[%d]:%s\n", i++, retptr);
        ptr = NULL;
    }

    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mafangsan
2014-10-16 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2575万
展开全部
这个用一个指针在字符串内走一下,做一个比较就搞定了,就是一个循环问题
 
#include <stdio.h>
void getstring(char *);
int main(void)
{
    char test[100];
    getstring(test);
    return 0;
}
void getstring(char *test)
{
    int count = 0;
   
    while((test[count] = getchar()) != ',' && test[count] != '\n')
    ++count;
    test[count] = '\0';  
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
春云者0c5e
2017-07-30 · TA获得超过311个赞
知道小有建树答主
回答量:199
采纳率:100%
帮助的人:96.4万
展开全部
给你推荐一个函数:strtok
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓝色幻想梦WV
2014-10-16 · 知道合伙人互联网行家
蓝色幻想梦WV
知道合伙人互联网行家
采纳数:106 获赞数:1818
大学生广告创意比赛一等奖获得者 省一等奖学金获得者

向TA提问 私信TA
展开全部
嗯,可以
追问
就是用scanf输入一行“1,2,3,4"把这四个数据存到数组该怎么写
追答
要加地址符的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式