本文目录一览:
- c语言如何从字符串数组中分离处单个字符
- 如何用c语言分离字符串中的字母和数字并分别输出?
- C语言有没有把字符串拆分为数组的函数?
- c语言分离字符串
- [C语言 写一个把一个字符串分成若干个数组](#C语言 写一个把一个字符串分成若干个数组)
- C语言中输入字符串,里面有空格,怎么根据空格把字符串分开,并存在数组里?
c语言如何从字符串数组中分离处单个字符
c语言的话,本质上来说是没有字符串数组这概念,字符串数组就是单个字符串起来,就是说定义的时候已经分成单个字符,不用再去分离
例如,定义一个char *str = "asdf";
那么str[0]
, str[1]
, str[2]
, str[3]
就会分别对应a
, s
, d
, f
如果你是要分割char *str = "a,b,c,d"
,这种类型的字符串,你可以用strtok
这个函数
如何用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();
}
}
扩展资料:
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。 参考资料来源:百度百科-字符串
C语言有没有把字符串拆分为数组的函数?
直接用简单的C++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 把字符串s按照字符串c进行切分得到vector
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;
}
}
输出结果:
张三
男
济南
大专学历
c语言分离字符串
/************************************************************************/
/* 21chenxb' work
2010-6-26
VC++6.0
C加加爱好者团
/************************************************************************/
#include <stdio.h>
void main() {
char a[] = "$GPGGA,003235.000,2247.2020,N,11353.5878,E,1,04,2.2,104.8,M,-3.3,M,,0000*4B";
char b[14][100];
int i = 0;
int j = 0;
int k = 0;
while (a[i]) {
if (a[i] != ',') {
b[j][k] = a[i];
k++;
} else {
b[j][k] = 0;
j++;
k = 0;
}
i++;
}
// 输出测试
for (int m = 0; m < 14; m++) {
printf("%s\n", b[m]);
}
}
时间有限,这个程序的比较死板。但是完全达到你问题中的目标。
C语言 写一个把一个字符串分成若干个数组
void *Split(const char *pString, int length) {
char *ptr = NULL;
int rows; // 一组等宽字符串可以看做二维数组的一行,定义行数
const char *pSrc = pString; // 取原地址作为源指针
char *pTag; // 目标指针
// 分割长度小于等于0,或指针无效时,返回空指针。
if (pString && length > 0) {
int len = strlen(pString);
int cols; // 列数
rows = len / length; // 字符串总长除以列数
if (len % length > 0) rows++; // 如果余数非0,则行数加一
ptr = new char[rows * (length + 1)]; // 创建足够的空间
pTag = ptr; // 初始化目标指针
while (*pSrc != '\0') { // 源指针指向的值如果有效则循环
cols = strlen(pSrc); // 取原指针开始的字符串长度
if (cols > length) cols = length; // 如果大于分割长度则修正,否则即为余数,就是最后一行的列数
memcpy(pTag, pSrc, cols); // 复制
pTag += length; // 目标指针递增一个列宽(行宽度)
*pTag = '\0'; // 填写结束符
pTag++; // 增补一个地址
pSrc += cols; // 源指针递增一个列宽(行宽度)
}
}
return ptr;
}
// 主函数
int _tmain(int argc, _TCHAR* argv[]) {
char *str = "abcdefghijklmn";
char (*p)[4];
p = (char (*)[4])Split(str, 3);
cout << p[1] << endl;
getchar();
return 0;
}
C语言中输入字符串,里面有空格,怎么根据空格把字符串分开,并存在数组里?
程序源码如下:
#include <stdio.h>
#include <string.h>
int main(void) {
char str[1000]; // 定义一个字符串数组
char strnew[1000]; // 定义一个备用字符串数组
char m[] = " "; // 定义空格变量
printf("请输入一串字符:"); // 文字提示输入字符串
gets(str); // 输入字符串
char *p = strtok(str, m); // 取str与m的指针
printf("%s\n", p); // 输出
p = strtok(NULL, m);
while (p) { // 遍历输出
printf("%s\n", p); // 输出字符串
p = strtok(NULL, m); // 指向下一个
}
}
程序输出结果:
扩展资料:
C语言:输入一个字符串放入数组里,删除其中的空格
#include <stdio.h>
#include <string.h>
#define N 100
void main() {
int i = 0, j;
char c, str[N];
printf("输入字符串str:\n");
while ((c = getchar()) != '\n') {
str[i] = c; // 输入字符串
i++;
}
str[i] = '\0';
for (i = 0; str[i] != '\0'; i++) {
if (str[i] == ' ') {
for (j = i + 1; str[j] != '\0'; j++) {
str[j - 1] = str[j];
}
str[j] = '\0';
} else {
continue;
}
}
str[i - 2] = '\0';
printf("去掉空格后的字符串为:\n");
for (i = 0; str[i] != '\0'; i++) {
printf("%c", str[i]);
}
printf("\n");
}