2016-05-05 7 views
-2

、:私はすべてstrstr機能と入力を使用デリミタ"_*_"によってループで文字列を分割する必要が"Error_*_code_break_*_505_*_7.8"C:例えば区切り文字なしの文字列から部品を取る(使用はstrstr)Iは、文字列を有する

新しい配列への部品は、のは、それを呼びましょう -

char *elements[4] = {"Error", "code_break", "505", "7.8"} 

しかしstrstr私だけのcharへのポインタ、任意のヘルプを提供しますか?

注:2番目の文字列"code_break"にはまだ"_"が含まれている必要があります。

+0

これはコーディングサービスではありません。まずコードを表示する必要があります。 – Olaf

答えて

0

これで途中まで行くことができます。このプログラムは、文字列の分割部分を標準出力に出力します。それは配列を作っていませんが、あなた自身で追加することができます。

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

void split(const char * str, const char * delimiter) 
{ 
    char * writable_str = strdup(str); 
    if (writable_str == NULL) { return; } 
    char * remaining = writable_str; 
    while (1) 
    { 
     char * ending = strstr(remaining, delimiter); 
     if (ending != NULL) { *ending = 0; } 
     printf("%s\n", remaining); 
     if (ending == NULL) { break; } 
     remaining = ending + strlen(delimiter); 
    } 
    free(writable_str); 
} 

int main(void) { 
    const char * str = "Error_*_code_break_*_505_*_7.8"; 
    const char * delimiter = "_*_"; 
    split(str, delimiter); 
    return 0; 
} 
+0

ありがとうございました! – boku666

0

文字列を配列に分割する関数です。関数がオーバーフィルしないように、配列のサイズを渡す必要があります。配列に格納されたものの数を返します。それが渡された文字列へのポインタです。 strtokのように、ヌル文字を挿入して文字列を修正します。

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

int split(char *string, char *delimiter, char* array[], int size) 
{ 
    int count=0; 
    char *current=string; 
    char *next; 
    while(current && *current!='\0') 
    { 
     next=strstr(current,delimiter); 
     if(!next)break; 
     *next='\0'; 
     if(count<size) array[count++]=current; 
     current=next+strlen(delimiter); 
    } 
    if(count<size) array[count++]=current; 
    return count; 
} 

int main() 
{ 
    char string[100]="Error_*_code_break_*_505_*_7.8"; 
    char *array[10]; 
    int size=split(string,"_*_",array,10); 
    for(int i=0;i<size;i++) puts(array[i]); 
    return size; 
} 
+0

'sizeof(array)'は配列の長さと異なります。 – BLUEPIXY

+0

@BLUEPIXY本当です!私は実際に私がやっていることを知っているので、私は何を考えていたのか分かりません。 –

関連する問題