Rum*_*chi -3 c segmentation-fault
我正在尝试开发一个基本的shell.对于那个shell,我需要一个C函数来解析一个字符串.因为我是CI的新手,试图开发一个基本功能,它给我一个分段错误错误.请告诉我我错过了什么.
#include<string.h>
#include<stdio.h>
void parse(char *msg);
int main()
{
char *msg = "This is a message";
parse(msg);
}
void parse(char *msg){
char *mm;
mm = msg;
char *tok;
tok = strtok(mm," ");
while(tok == NULL){
tok = strtok(NULL," ");
printf("%s \n",tok);
}
}
Run Code Online (Sandbox Code Playgroud)
错误消息(运行时)
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
提前致谢
msg
指向字符串文字,并且您尝试修改它.在C中,修改字符串文字是未定义的行为(实际上,编译器通常将它们放在只读内存中).
要修复,请msg
变成一个数组:
int main()
{
char msg[] = "This is a message";
parse(msg);
}
Run Code Online (Sandbox Code Playgroud)
此外,您的while
循环还有几个问题:
1)条件是错误的方式;
2)第二个strtok()
电话应该出现后的printf()
.
void parse(char *msg){
char *mm = msg;
char *tok = strtok(mm, " ");
while (tok) {
printf("%s \n",tok);
tok = strtok(NULL," ");
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
143 次 |
最近记录: |