#include "stdio.h"
#include "string.h"
int main(){
int counter;
char *token;
char s[]={"I am John"};
char con[256];
token = strtok(s," ");
while(token != NULL){
if (counter==0){
strcat(con,token);
token = strtok(NULL," ");
counter++;
}else{
strcat(con,token);
token = strtok(NULL," ");
strcat(con," ");
}
}
printf("%s\n",con);
return 0;
}`
printf()
的输出是"我是约翰"
我希望输出是"是约翰"
答案 0 :(得分:3)
counter
和数组con
未初始化。所以它会导致错误的结果。
答案 1 :(得分:3)
strcat
期望第一个参数为空终止,由于其未初始化,因此无法通过声明con
来保证。所以strcat
的调用是未定义的行为。因此,您的程序是未定义的行为。做
con[0] = '\0';
解决此问题。
counter
未初始化。在表达式中使用它也是未定义的行为。