将字符串分成 'first' 和 'second'
break a string into 'first' and 'second'
我看了无数strtok
帖子,甚至直接完整地复制了一些到一个新的int main
,但我不知道如何创建函数get_first
和 get_second
.
get_first("This is a sentence."); //returns "This"
get_rest("This is a sentence."); //returns "is"
这就是我目前所拥有的,除了使用 strtok
时遇到了麻烦,但我不知道还能使用什么。
#include <stdio.h>
#include <string.h>
char * get_first(char * string) {
string = strtok(string, " ");
return string;
}
char * get_second(char * string) {
string = strtok(string, " ");
string = strtok(NULL, " ");
return string;
}
int main(int argc, char * argv[]) {
char * test_string = "This is a sentence.";
char * first = get_first(test_string);
char * second = get_second(test_string);
printf("%s\n", first);
printf("%s\n", second);
}
使用 gcc -g -Wall 编译没有错误,但它总是会出现错误。我想我已经尝试了 char c[]
和 char * c
的所有排列。
strtok
更改字符串。 (但不允许更改字符串文字。)
所以创建一个副本。
执行以下操作:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * get_first(const char *string){
char *clone = strdup(string);//create copy, strdup is non standard. malloc and copy.
char *token = strtok(clone, " ");
if(token)
token = strdup(token);
free(clone);
return token;
}
char * get_second(const char *string) {
char *clone = strdup(string);
char *token = strtok(clone, " ");
if(token && (token = strtok(NULL, " ")))
token = strdup(token);
free(clone);
return token;
}
int main(void) {
char * test_string = "This is a sentence.";
char * first = get_first(test_string);
char * second = get_second(test_string);
printf("%s\n", first);
printf("%s\n", second);
free(first);
free(second);
}
我看了无数strtok
帖子,甚至直接完整地复制了一些到一个新的int main
,但我不知道如何创建函数get_first
和 get_second
.
get_first("This is a sentence."); //returns "This"
get_rest("This is a sentence."); //returns "is"
这就是我目前所拥有的,除了使用 strtok
时遇到了麻烦,但我不知道还能使用什么。
#include <stdio.h>
#include <string.h>
char * get_first(char * string) {
string = strtok(string, " ");
return string;
}
char * get_second(char * string) {
string = strtok(string, " ");
string = strtok(NULL, " ");
return string;
}
int main(int argc, char * argv[]) {
char * test_string = "This is a sentence.";
char * first = get_first(test_string);
char * second = get_second(test_string);
printf("%s\n", first);
printf("%s\n", second);
}
使用 gcc -g -Wall 编译没有错误,但它总是会出现错误。我想我已经尝试了 char c[]
和 char * c
的所有排列。
strtok
更改字符串。 (但不允许更改字符串文字。)
所以创建一个副本。
执行以下操作:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * get_first(const char *string){
char *clone = strdup(string);//create copy, strdup is non standard. malloc and copy.
char *token = strtok(clone, " ");
if(token)
token = strdup(token);
free(clone);
return token;
}
char * get_second(const char *string) {
char *clone = strdup(string);
char *token = strtok(clone, " ");
if(token && (token = strtok(NULL, " ")))
token = strdup(token);
free(clone);
return token;
}
int main(void) {
char * test_string = "This is a sentence.";
char * first = get_first(test_string);
char * second = get_second(test_string);
printf("%s\n", first);
printf("%s\n", second);
free(first);
free(second);
}