strtok用指针编译没问题,运行出错

C语言 码拜 9年前 (2015-10-19) 871次浏览
为什么用指针不行(编译没问题,运行出错),用数组名就可以?

//为可行的方案

#include <stdio.h>
#include <string.h>
int main(void)
{
	char * string = "hello,how,are,you?fine,thanks!";
	char * token = "?";
//	char string[] = "hello,how,are,you?fine,thanks!";
//	char token[] = ",?!";
	char * result = NULL;
//	char *a = string;
//	char *b = token;
	result = strtok(string, token)
//	result = strtok(a, b);
	while(result != NULL){
		puts(result);
		result = strtok(NULL, token);
//		result = strtok(NULL, b);
	}
	return 0;
}
解决方案:10分
指针也可以的,但是你要给它动态分配内存。
解决方案:30分
char *string 与char string[] 的区别

当对这两者字符串处理时,前者字符串本身并不会变,变的只是指针,只有后者才可以改变字符串内容

strtok()函数会改变原字符串,

所以用前者错误,后者正确


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明strtok用指针编译没问题,运行出错
喜欢 (0)
[1034331897@qq.com]
分享 (0)