【问题标题】:How to split a string at the first space如何在第一个空格处拆分字符串
【发布时间】:2018-05-08 15:47:13
【问题描述】:

我有一串这样的数字: 160 01 11 12 33 44 44 ... 我想从一开始就拆分到第一个空间,如下所示: 160 | 01 11 12 33 44 44.... 例如,我可以将字符串放在数组中第一个空格之前,然后将字符串放在其他数组中。

arr1[]='160'

arr2[]='01 11 12 33 44 44...'

我正在从文件中提取这种类型的字符串,所以我的代码是这样的:

int le_ficheiro(char* filename) {
FILE *ficheiro=fopen(filename,"r");
size_t len=0;
char *line=NULL;
ssize_t read;
if(ficheiro==NULL) {
    exit(EXIT_FAILURE);
}



while((read = getline (&line, &len,ficheiro))!=-1)   //read line by line
{
    printf("Retrieved line of length %zu:\n",read);
    printf("%s\n",line);
    printf("Aqui : %c\n",line[0]);

}
fclose(ficheiro);
if(line)
    free(line);
exit(EXIT_SUCCESS);

我需要一些帮助才能做到这一点。

【问题讨论】:

    标签: c string split


    【解决方案1】:

    您可以使用strtok 来拆分您的字符串。这是man page

    在这种特定情况下,找到第一个空格并拆分就足够了。

    char *s1;
    char *s2;
    char *sp;
    
    sp = strchr(line, ' ');
    if (!sp) { exit(EXIT_FAILURE); }
    
    s1 = strndup(line, sp-line); /* Copy chars until space */
    s2 = sp+1; /* Skip the space */
    
    ...
    
    free(s1);
    

    【讨论】:

    • 它只在第一个空格处分裂?
    【解决方案2】:
    const char* str;
    char first[5] ,rest[50]; 
    sscanf(str, "%d %s", first,rest);
    int first_i = atoi(first);
    

    double first_d = atof(first);
    

    这应该也可以。

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 2013-04-19
      • 2012-05-10
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 2012-05-03
      相关资源
      最近更新 更多