我正在使用一小段代码来测试更大(初学者)程序的功能,但我不明白两个字符串之间的区别。
我发现并使用了:
#include <stdio.h>
#include <string.h>
int main()
{
char *string, *found;
string = strdup ("1/2/3");
printf("Orig: '%s'\n",string);
while ((found = strsep(&string,"/")) != NULL )
printf ("%s\n",found);
return (0);
}
这一次打印一个令牌。
然后,当我尝试移动到用户输入的字符串时:
#include <stdio.h>
#include <string.h>
int main()
{
char string[13],
char *found, *cp = string;
fprintf(stderr, "\nEnter string: ");
scanf("%12s",string);
printf("Original string: '%s'\n",string);
while((found = strsep(&cp,"/,-")) != NULL )
printf("%s\n",found);
return(0);
}
我得到一个段错误。我了解指针、数组和字符串的基础知识,但显然我遗漏了一些东西,并且希望有人告诉我它是什么!
另外-如果我更改printf("%s\n",found);
为printf("%i\n",found);
我会返回一些垃圾整数,但总是正确的数量,例如,如果我输入1/2/3
我会得到三行整数,1111/2222
我会得到两行。
谢谢!
- 编辑 - 有一个附加问题,在此处strsep
详细说明。谢谢大家。