簡體   English   中英

在C中沒有分割功能的分割字串

[英]Split string without split function in c

因此,我正在編寫一個程序,該程序使用一個人的名字並將其分解為名字和姓氏,例如,如果您輸入JonSnow,則應打印:First:Jon Last:Snow

這是代碼,請忽略注釋,我正在測試一堆不同的方法。

#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);  
}

當我在終端中運行它時,得到以下信息:

What is your name? JonSnow

Segmentation fault (core dumped)

有什么問題,請幫忙...

我認為您的代碼很接近,您只是在弄亂如何使用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指定的字符數復制到第一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM