C语言如何分割字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何分割字符串相关的知识,希望对你有一定的参考价值。

问题:需要设计c语言程序来问你的姓名和学号,这时候用char和scanf就好,可是老师说万一问姓名结果你输入的是数字这也要检测出来,于是想到分割字符串来检测是否含有除了字母以外的东西,这种思路对吗?表示刚学C语言,老师就这样坑我们。。。大神求救!!!

  可以写一个分割函数,用于分割指令,比如cat a.c最后会被分割成cat和a.c两个字符串、mv a.c b.c最后会被分割成mv和a.c和b.c三个字符串。

  参考代码如下:

#include <stdio.h>
#include<string.h>
#define MAX_LEN 128
void main()

    int i,length,ct=0,start = -1;
    char inputBuffer[MAX_LEN],*args[MAX_LEN];
    strcpy(inputBuffer,"mv a.c b.c");
    length=strlen(inputBuffer);
     for (i = 0; i <= length; i++) 
        switch (inputBuffer[i])
        case \' \':
        case \'\\t\' :               /* argument separators */
            if(start != -1)
                args[ct] = &inputBuffer[start];    /* set up pointer */
                ct++;
            
            inputBuffer[i] = \'\\0\'; /* add a null char; make a C string */
            start = -1;
            break;
        case \'\\0\':                 /* should be the final char examined */
            if (start != -1)
                args[ct] = &inputBuffer[start];
                ct++;
            
            inputBuffer[i] = \'\\0\';
            args[ct] = NULL; /* no more arguments to this command */
            break;
        default :             /* some other character */
            if (start == -1)
                start = i;
        
     
    printf("分解之后的字符串为:\\n");
    for(i=0;i<ct;i++)
        printf("%s \\n",args[i]);
参考技术A 直接去判断每个字符是否是“0”~“9”,包含这些就直接提示错误信息。 当然如果包含“,、。!”等符号是不是要检测就看你们的要求了。追问

怎么判断每个字符?问题就是怎么分割,不是只打一个数字,而是例如asdfsad1adfa这种,把1检测出来 = =

追答

指针。 str++ 的方式 一个个的读出来判断

追问

求详细?本人初学者见谅

追答

char str[] = "adf3asd"; //模拟一下你的输入数据。
int ret = 1;
char* p = str;
while (*p)

if (*p>='0'&&(*p)<='9')

ret = 0;
break;

p++;


if (ret == 0)

printf("Failed!");
else
printf("Success!");

追问

大神给个赞!可是我要找语言代替这个adf3asd,比如先char name 再scanf %s 来指代输入的字符,要怎么写呢?还有这种语言着实没学过,大神帮写个能懂的comment好吗?十分感谢

追答

char* p = NULL;
bool ret = true;
char name[256]=0;
printf("please input your name:\n");
scanf("%s",name);

p = name;
while (*p)

if (*p>'0'&& *p<'9')

ret = false;
break;



if (ret)

printf("Success!");
else
printf("Failed!");

本回答被提问者和网友采纳

C 语言 字符串命令 strstr()的用法 实现将原字符串以分割串分割输出

strstr() 命令是在原字符串中查找指定的字符串第一次出现的地址,用这个特性可以实现字符的分割,判断是否包涵等功能:

下面的这个例子是实现 字符串以分割串分割输出:

 

技术分享
 1 #include <stdio.h>
2 #include <string.h>
3
4 int main()
5 {
6 char *str="aaa||a||bbb||c||ee||";
7 char *sp="||";
8
9 char *pos = strstr(str,sp); //先从原始串中寻找分割符所在地址
10 char *lastPos = str; //上一次的首地址 ,第一次当然为原始串的首地址
11 while (pos != NULL)
12 {
13 if((pos - lastPos) > 0) //两个分割串之间是否存在字符
14 {
15 int i = 0;
16 do
17 {
18 printf("%c",*(lastPos + i)); // 从上一地址向当前地址 逐一的输出字符
19 i++;
20 }
21 while((lastPos + i) < pos);
22 printf("\n"); // 在结尾增加换行
23 }
24 lastPos = pos + strlen(sp); //新的字串首 是在上一次找到的地址位置+分割符长
25 pos = strstr(lastPos,sp); //再从新的字串地址开始查找 下一个分割符位置
26 }
27 return 0;
28 /*
29 输出:
30 aaa
31 a
32 bbb
33 c
34 ee
35 */
36 }
技术分享

以上是关于C语言如何分割字符串的主要内容,如果未能解决你的问题,请参考以下文章

Delphi里面字符分割函数是啥 如何分割以 为分割的字符串

C语言如何实现分割字符串为一个个单独的字符并保存

abap编程,字符如何分割?

c语言如何分割字符串并将结果放入数组?

C语言分割字符串

c语言 讲一个字符串str以空格为分割,分割后输出到一个一维数组