编辑:好的,所以出于某种原因,我认为 scanf 行会在整行中读取为字符串(多个参数)。脑子真的要炸了。谢谢大家的帮助。
我正在尝试将一些字符放入数组中。这是代码的外观。
编辑:添加更多代码以希望能更清楚地解决问题 Edit2:我可以将 char 指针“消息”视为此函数中的字符串吗?
//in main...
printf( "Enter a command> " );
scanf( "%s", buf );
message = convertMessage( buf );
//....
char* convertMessage( char *message ){
char *convMess = calloc( 50, sizeof(char) );
char *tok = strtok( message, " ," );
if( convMess == NULL ){
perror( "memory error" );
exit(-5);
}
if( strcmp( tok, "get" ) == 0 ){
tok = strtok( NULL, " ," );
if( strcmp( tok, "lname" ) == 0 ){
convMess[0] = '1'; // seg faults on this line
convMess[1] = ' ';
strcat( convMess, tok );
return convMess;
}
else if( //...
//...and so on
//output from gdb
Program received signal SIGSEGV, Segmentation fault.
0x0000000000400e5d in convertMessage (
message=0x7fffffffbfa0 "get") at client.c:135
135 if( strcmp( tok, "lname" ) == 0 ){
(gdb) quit
我知道我可能误解了一些非常简单的东西,但我一直在研究这段代码很长时间,我觉得我的脑子已经炸了。另外,我检查了在线参考资料,cplusplus.com/reference 上的代码看起来和我的一样。
谢谢您的帮助。