Solved

How to split a string and put its element in a array?

Posted on 2007-04-03
6
390 Views
Last Modified: 2010-08-05
I'd like to split a string and put its element into an array.For example, I have a string
ls -l arg
and an array
char *arg[]
I'd like to split that string and assign each substring for elements of the array.The expected result is
arg[0]= ls;
arg[1]= -l;
arg[2]= arg
I use strktok function with the delimiter is space character but it seems did not work. Do i have to malloc for the array because we do not know the number of substrings?
0
Comment
Question by:khoama
  • 4
  • 2
6 Comments
 
LVL 53

Accepted Solution

by:
Infinity08 earned 500 total points
ID: 18841798
strtok will work just fine. Either you do it like this :

  char str[] = "ls -l arg";
  char *str_ptr;
  char *arg[3] = { 0 };
  int count = 0;
  str_ptr = strtok(str, " ");
  while (str_ptr) {
    arg[count++] = str_ptr;
    str_ptr = strtok(NULL, " ");
  }

And then you have to realise that the arg array's elements point INTO the original str like this :

    "ls\0-l\0arg"
     ^   ^   ^
      |    |    arg[2]
      |    arg[1]
      arg[0]

If you don't want that, you'll have to COPY the tokens :

  char str[] = "ls -l arg";
  char *str_ptr;
  char *arg[3] = { 0 };
  int count = 0;
  str_ptr = strtok(str, " ");
  while (str_ptr) {
    arg[count] = malloc(strlen(str_ptr) + 1);
    strcpy(arg[count++], str_ptr);
    str_ptr = strtok(NULL, " ");
  }
  /* don't forget to free the arg elements !! */
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 18841799
Note that in both cases, the original string is modified (every space is replaced by a NULL character) !!

http://www.cplusplus.com/reference/clibrary/cstring/strtok.html
0
 
LVL 2

Author Comment

by:khoama
ID: 18842182
thanks for your reply.Can you show me a full, easy-to-understand, source about String,Pointer,Array (multi-dimension),I/O,FILE (how to manipulate a file) in C? I understand them but still ambiguous  
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 53

Expert Comment

by:Infinity08
ID: 18842183
Why a B grade ? Is there something that wasn't clear ? If so, just ask for clarification ...

You don't have to accept the solution if you're not happy with it !!
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 18842195
>> Can you show me a full, easy-to-understand, source about String,Pointer,Array (multi-dimension),I/O,FILE (how to manipulate a file) in C?

This is not something that can easily be answered. I suggest reading up on these topics. If you have specific questions, you can always ask them here, and we'll be glad to answer them for you !


This is a good tutorial :

http://www.cplusplus.com/doc/tutorial/

It's for C++, but the chapters about pointers and arrays are valid for C too.


For C I/O, check the reference :

http://www.cplusplus.com/reference/clibrary/cstdio/

It contains explanations for each function, including examples showing how to use it.
0
 
LVL 2

Author Comment

by:khoama
ID: 18843795
hi guy please do not misunderstand me,Your answer is clear.Thanks for your comments
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Have you thought about creating an iPhone application (app), but didn't even know where to get started? Here's how: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Important pre-programming comments: I’ve never tri…
Preface I don't like visual development tools that are supposed to write a program for me. Even if it is Xcode and I can use Interface Builder. Yes, it is a perfect tool and has helped me a lot, mainly, in the beginning, when my programs were small…
The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.
The goal of this video is to provide viewers with basic examples to understand how to use strings and some functions related to them in the C programming language.

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

26 Experts available now in Live!

Get 1:1 Help Now