1. 請問,c語言中,對帶分隔符的字元串如何分割
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
<stdio.h>
#include
<string.h>
int
main
()
{
char
str[]
="a,b,c,d*e";
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,d*e"用逗號(,)來作界定符對字元串進行分割。
輸出結果將如下所示:
a
b
c
d*e
因為delimiters支持多個分割符,
我們將本示例中的語句行
const
char
*
split
=
",";
改成
const
char
*
split
=
",*";
//用逗號(,)和星號(*)對字元串進行分割
這樣輸出結果將如下所示:
a
b
c
d
e
2. C語言如何實現分割字元串為一個個單獨的字元並保存
不需要專門分割,C語言裡面本來就是用字元數組來保存的,如:char a[20]="Hello world!";這個字元串,char[0]就是H,char[1]就是e。
如果要分割子串,可以使用strtok函數。
char *strtok(char *s, char *delim);
分解字元串為一組字元串。s為要分解的字元串,delim為分隔符字元串。
首次調用時,s指向要分解的字元串,之後再次調用要把s設成NULL。
strtok在s中查找包含在delim中的字元並用NULL('')來替換,直到找遍整個字元串。
3. c語言中 如何分割字元串
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 <stdio.h>
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;
}
4. C語言如何實現文件分割功能
strcat()是追加字元串的函數。
strcat(char[] a,char []b)即將第二個字元串追加到第一個字元串末尾,第二個字元串值不變,第一個變長。
你的理解是對的 但是使用有誤!追加時需要保證第一個字元串在加上第二個之後依舊不能溢出。在此題中,你的a[]字元串長度在追加上".txt"之後,會溢出,建議在定義a的時候寫上char a[100]保證不溢出。
5. C語言以逗號分割字元串
#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;
}
(5)寫c語言用什麼分割方式擴展閱讀
C語言的字元串按照指定字元串分割操作
#include<stdio.h>
#pragmawarning(disable:4996)
#include<stdlib.h>
intmain()
{
charstr[]="我,是,中國,程序員";
char*ptr;
char*p;
printf("開始前:str=%s ",str);
printf("開始分割: ");
ptr=strtok(str,",");
while(ptr!=NULL){
printf("ptr=%s ",ptr);
ptr=strtok(NULL,",");
}
getchar();
}
6. c語言中,語句之間用什麼分隔 一行代碼沒寫完,應該如何接下去寫
語句之間用
;
號結束
如果一句代碼分多行寫
例如編寫
a>=b
可以寫成這樣
a>\
=b
利用
\
可以另起一行寫前提是下一行必須頂格寫
另外的向樓上講的
哪些情況可以直接回車
寫下一行
樓上講的
例如
定義:int
ab,cd,ef;
是可以分行寫的
如:
a\
b=cd+e\
f;
/*斜杠後的一行頂格寫就可以的*/
以上是在VC++6.0裡面可以實現
7. C語言如何分割字元串
可以寫一個分割函數,用於分割指令,比如cat a.c最後會被分割成cat和a.c兩個字元串、mv a.c b.c最後會被分割成mv和a.c和b.c三個字元串。
參考代碼如下:
#include<stdio.h>
#include<string.h>
#defineMAX_LEN128
voidmain()
{
inti,length,ct=0,start=-1;
charinputBuffer[MAX_LEN],*args[MAX_LEN];
strcpy(inputBuffer,"mva.cb.c");
length=strlen(inputBuffer);
for(i=0;i<=length;i++){
switch(inputBuffer[i]){
case'':
case' ':/*argumentseparators*/
if(start!=-1){
args[ct]=&inputBuffer[start];/*setuppointer*/
ct++;
}
inputBuffer[i]='