簡體   English   中英

未定義大小的字符串在c中拆分而沒有strtok

[英]undifined sized string split in c without strtok

我有一個字符串:

 char *s = "asdf:jhgf";

我需要將其分為兩個標記:

token[0] = "asdf";
token[1] = "jhgf"; 

我在strtok()遇到問題。

您可以使用簡單的sscanf()

char token[2][80];

if(sscanf(s, "%[^:]:%s", token[0], token[1]) == 2)
{
  printf("token 0='%s'\ntoken 1='%s'\n", token[0], token[1]);
}

請注意,第一次轉換是使用%[^:]進行掃描,直到(但不包括)冒號為止。 然后我們跳過冒號,並掃描一個普通的字符串。

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

int main(){
    char *s = "asdf:jhgf";
    char *token[2];
    char *p = strchr(s, ':');
    size_t len1 = p-s, len2 = strlen(p+1);
    token[0] = malloc(len1+1);
    token[1] = malloc(len2+1);
    memcpy(token[0], s, len1);
    token[0][len1]=0;
    memcpy(token[1], p+1, len2+1);
    puts(token[0]);
    puts(token[1]);
    free(token[0]);free(token[1]);
    return 0;
}

暫無
暫無

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

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