简体   繁体   English

在c中分隔字符串的函数

[英]function to separate a string in c

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

void separate(char s[20], char dummy[10], char* p){
    strcpy(dummy, s);
    for (int i = 0; i < strlen(dummy); i++){
        if (dummy[i] == ' '){
            dummy[i] = '\0';
        }
    }
    *p = strchr(s, ' ');
    p++;
}
int main(){
    char s[10];
    char dummy[10];
    char l;
    gets(s);

    separate(s, dummy, &l);
    puts(dummy);
    puts(l);
}

I'm having trouble passing the last name to the main function as a string, the goal is to separate a string that consists of someone's first and last name. 我在将姓氏作为字符串传递给main函数时遇到麻烦,目标是分离由某人的名字和姓氏组成的字符串。

    #include <stdio.h>
    #include <string.h>
    void separate(char name[], char first[], char last[]){
    strcpy(first, name);
    for (int i = 0; i < strlen(first); i++){
        if (first[i] == ' '){
            first[i] = '\0';
        }
    }
    char *p = strchr(name, ' ');
    p++;
    strcpy(last, p);
}

int main(){
    char n[10], f[10], l[10];
    gets(n);
    separate(n, f, l);
    puts(f);
    puts(l);
}

I figured it out, thanks for the help anyway. 我想通了,还是感谢您的帮助。

Here is an example of using fgets : 这是使用fgets的示例:

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

#define BUFFSIZE 20
#define NAMESTRLEN 10

void separate(char buffer[], char firstname[], char lastname[]);

int
main(void) {
    char buffer[BUFFSIZE], firstname[NAMESTRLEN], lastname[NAMESTRLEN];
    size_t slen;

    printf("Enter first and last name: ");
    if (fgets(buffer, BUFFSIZE, stdin) == NULL) {
        printf("Error reading into buffer.\n");
        exit(EXIT_FAILURE);
    }  

    slen = strlen(buffer);
    if (slen > 0) {
        if (buffer[slen-1] == '\n') {
            buffer[slen-1] = '\0';
        } else {
            printf("Exceeded buffer length: %d.\n", BUFFSIZE);
            exit(EXIT_FAILURE);
        }
    }

    if (!*buffer) {
        printf("Nothing entered.\n");
        exit(EXIT_FAILURE);
    }

    separate(buffer, firstname, lastname);

    printf("Firstname = %s\n", firstname);
    printf("Lastname = %s\n", lastname);

    return 0;
}

void
separate(char buffer[], char firstname[], char lastname[]) {
    int i;
    char *last;
    const char sep = ' ';

    for (i = 0; buffer[i] != sep; i++) {
        firstname[i] = buffer[i];
    }
    firstname[i] = '\0';

    last = strchr(buffer, sep);
    last++;

    strcpy(lastname, last);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM