C strtok分离器返回→(结束时

Nie*_*iek 1 c strtok

我编写了一个程序,我想输入例如"11:12",然后返回"11"和"12".这是我的代码:

#include<stdio.h>
#include <string.h>
#include <conio.h>
int main(void)
{
char s[] = "";
char seperator[] = ":";
char *ch;
while (1)
{
scanf("%s", &s); //scanf("%s", &s);
if (s == -1) break;
char *result = NULL;
result = strtok(s, seperator);
while( result != NULL ) {
    printf( "result is \"%s\"\n", result );
    result = strtok( NULL, seperator );
}
fflush(stdout);

}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我输入"11:12"时,这是我的输出:

result is "11"
result is "12? ("
Run Code Online (Sandbox Code Playgroud)

我怎么能摆脱最后的"→(?"?

imr*_*eal 6

您没有为"s"阵列分配任何内存.试试这样:

char s[128] = "";
Run Code Online (Sandbox Code Playgroud)

另外,你正在使用参数&sscanf进行双重间接,没有必要,因为"s"将作为函数的参数衰减为指针.试试这样:

  scanf("%s", s);
Run Code Online (Sandbox Code Playgroud)