1. 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;
}
2. c語言:如何把字元串分解為一個個的字元
1.
不需要專門分割,c語言裡面本來就是用字元數組來保存的,如:char
a[20]="hello
world!";這個字元串,char[0]就是h,char[1]就是e。
2.
如果要分割子串,可以使用strtok函數。
char
*strtok(char
*s,
char
*delim);
分解字元串為一組字元串。s為要分解的字元串,delim為分隔符字元串。
首次調用時,s指向要分解的字元串,之後再次調用要把s設成null。
strtok在s中查找包含在delim中的字元並用null('')來替換,直到找遍整個字元串。
3. c語言如何從字元串數組中分離處單個字元
c語言的話,本質上來說是沒有字元串數組這概念,字元串數組就是單個字元串起來,就是說定義的時候已經分成單個字元,不用再去分離
例如,定義一個char *str = "asdf";那麼str[0],str[1],str[2],str[3]就會分別對應asdf
如果你是要分割char *str = "a,b,c,d",這種類型的字元串,你可以用strtok這個函數
4. 如何用c語言分離字元串中的字母和數字並分別輸出
給出代碼:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
usingnamespacestd;
intmain()
{
intnum,snum;
num=0;
snum=0;
chars[100];
charzi[100];
charfu[100];
scanf("%s",s);
for(inti=0;i<strlen(s);i++)
{
if(s[i]<='9'&&s[i]>='0')
{
zi[num]=s[i];
num++;
}
elseif(s[i]<='z'&&s[i]>='a'||s[i]<='Z'&&s[i]>='A')
{
fu[snum]=s[i];
snum++;
}
}
for(inti=0;i<=num;i++)
{
printf("%c",zi[i]);
}
cout<<endl;
for(intj=0;j<=snum;j++)
{
printf("%c",fu[j]);
}
return0;
}
5. 如何用c語言分離字元串中的字母和數字並分別輸出
把字元串存放到數組裡面,一個一個比對(循環)後輸出
判斷數字:
for (i=0;i<n;i++){
if ((p[i]>='0') && (p[i]<='9'))
printf();
判斷字母:
for (i=0;i<n;i++){
if ((p[i]>='a') && (p[i]<='Z'))
printf();
(5)c語言分離字元串擴展閱讀:
通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字元串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的存儲方式是順序存儲方式和鏈接存儲方式。
6. C語言字元串分割
char *strtok(char *str, const char *delim)
str -- 要被分解成一組小字元串的字元串。
delim -- 包含分隔符的 C 字元串。
int sscanf(const char *str, const char *format, ...)
char *strstr(const char *haystack, const char *needle)
haystack -- 要被檢索的 C 字元串。
needle -- 在 haystack 字元串內要搜索的小字元串。
7. C語言字元串拆分
使用strstr函數嘛(以下代碼測試通過)
功能:在一個字元串中查找特定的字元串,如果查找到會返回查找到字元串的位置,失敗返回NULL
分析:搜索字元串"bizbox_userlang=",成功後取出'='後和『=』後第1個';'之間的所有字元
#include <stdio.h>
int main(int argc, char* argv[])
{
char buf1[]="bizbox_username=admin; bizbox_userpass=; bizstore_note=; bizbox_userlang=zh; csd=33; cod=29.30; business_note=null";
char *buf2="bizbox_userlang=";
char *ptr;
char txt[100];
ptr=strstr(buf1,buf2); //成功返回的位置是"bizbox_userlang=zh; csd=33...."
if( ptr==NULL)
{
printf("沒有找到該內容\n");
return -1;
8. 請問,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
9. 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]='