在c中没有拆分功能的拆分字符串

时间:2017-03-30 23:38:42

标签: c

所以我正在编写一个程序,它接受一个人名并将其拆分为它们的名字和姓氏,例如,如果你输入JonSnow,它应该打印: 第一名:乔恩 最后:雪

这是代码,请忽略评论,我正在测试一系列不同的方法。

c1[0]

当我在终端中运行它时,我明白了:

#include <stdio.h>
#include <string.h>

int main()    
{   
    char name[50],first[25],last[25];
    int i;

    printf("What is your name? ");
    scanf("%s",name);

    strcpy(first," ");
    strcpy(last," ");
    for(i=0;i<strlen(name);i++){
        strcat(first,name[i]);              //for(j=i+1;strlen(name);j++){
        if(name[i+1]>=65 && name[i+1]<=90){
            strcat(last,name[i]);
            strcat(last,name[i+1]); 
        }
        //}             
    }

    printf("First name: %s \n",first);
    printf("Last name: %s \n",last);  
}

有什么问题,请帮忙......

1 个答案:

答案 0 :(得分:1)

我认为你的代码很接近,你只是搞乱了如何使用strcat尝试在字符串的末尾添加单个字符,而这并不是这样。也许你可以这样做:

#include <stdio.h>
#include <string.h>

int main() {

char name[50],first[25] = {0},last[25] = {0};
int i;

    printf("What is your name? ");
    scanf("%s",name);

    for(i=0;i<strlen(name);i++) {
        if(name[i+1]>=65 && name[i+1]<=90) {
            strncpy(first,name,i+1);
            strcpy(last,&name[i+1]); 
        }
    }
    printf("First name: %s \n",first);
    printf("Last name: %s \n",last);
}

strncpy将i + 1指定的字符数复制到第一个。