1

次のような const char* 変数 "str" があります。

const char* str ="/v1/AUTH_abb52a71-fc76-489b-b56b-732b66bf50b1/images/bhs";

strこの変数を分割して、のような配列に格納する必要がありchar a[256]ます。しかし、すべてのスラッシュ()を検出して分割したい/v1などを保存したいということですAUTH_abb52a71-fc76-489b-b56b-732b66bf50b1。問題は、このプロジェクトでは文字列ライブラリと名前空間 std の使用が許可されていないため、istringstream. string.hとの使用のみ許可されていますstdio.h。では、この制限内でどのようにそれを行うことができますか?

4

5 に答える 5

6

strcpy()、次に strtok()。

または、配列を反復処理することにより、本当に基本的な方法で実行します。

これは宿題ですか?

于 2012-04-26T12:11:54.140 に答える
4
  const char* yourStr;
  char str[1000];
  strncpy(str, yourStr, sizeof(str));
  char* parts[100] = {0};
  unsigned int index = 0;
  parts[index] = strtok(str,"/");

  while(parts[index] != 0)
  {
    ++index;
    parts[index] = strtok(0, "/");
  }        
于 2012-04-26T12:25:22.063 に答える
1
#include <stdio.h>
#include "string.h"


int main()
{
    char str [] ="/v1/AUTH_abb52a71-fc76-489b-b56b-732b66bf50b1/images/bhs";

    char* token_pointer;
    token_pointer = strtok(str, "/");

    while(NULL != token_pointer)
    {
            //handle your token
        printf("%s \n", token_pointer);
        token_pointer = strtok(NULL, "/");    
    }

    return 0;
}

それを実行します。コンソールを確認してください。

それが役に立てば幸い!

乾杯 ;)

于 2012-04-26T12:28:11.377 に答える
1

同様の投稿strtok があります-改行を回避して文字列の配列に配置するにはどうすればよいですか? 、 突き抜ければ素晴らしい答えが見つかります。

そこからの抜粋コード

#include <stdlib.h>
#include <string.h>
...
void split(char *str, char **splitstr) 
{      
  char *p;      
  int i=0;      

  p = strtok(str,",");      
  while(p!= NULL)      
  {                
    printf("%s", p);
    splitsr[i] = malloc(strlen(p) + 1);
    if (splitstr[i])
      strcpy(splitstr[i], p);
    i++;
    p = strtok (NULL, ",");       
  } 
}
于 2012-04-26T12:31:34.370 に答える
1

strtok文字列をトークンに分割する関数を使用できます。« / » 値で « delim » を設定できます。

于 2012-04-26T12:13:56.780 に答える