c语言字符串数组分离,c语言数组分割

发布时间:2022-12-01

本文目录一览:

  1. c语言如何从字符串数组中分离处单个字符
  2. 如何用c语言分离字符串中的字母和数字并分别输出?
  3. C语言有没有把字符串拆分为数组的函数?
  4. c语言分离字符串
  5. [C语言 写一个把一个字符串分成若干个数组](#C语言 写一个把一个字符串分成若干个数组)
  6. 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");
}