【问题标题】:Having trouble parsing "file server commands" in C在 C 中解析“文件服务器命令”时遇到问题
【发布时间】:2014-11-14 21:41:13
【问题描述】:

命令格式如下:

命令文件名字节\nfile_contents

我可以毫无问题地分离 ADD、文件名和字节数,但我不确定如何获取服务器命令的其余部分,即文件内容。

这就是我解析每个命令的方式。目前为了获取文件内容,我得到了最左边的 char*,即 '\n'。 file_contents char* 永远不会从 NULL 更改。

command = strtok( message, " \n" );
file = strtok( NULL, " " );
bytes = atoi( strtok( NULL, "\n" ) );
file_contents = strchr( message, '\n' );

对如何获取文件内容有什么建议吗?

【问题讨论】:

  • 您确定在 bytes\nfile_contents 中嵌入了真正的换行符 (ASCII 10 0xa),还是只是一个 backslash 后跟 n
  • 如果是换行符,它会被您的bytes 调用使用,导致file_contents = strchr( message, '\n' ); 指向消息末尾的换行符(如果存在)。再次使用 strtok 就足够了 file_contents = strtok( NULL, "\n" ); (以换行符或空终止字符结尾(如果不存在换行符)。

标签: c string parsing strchr


【解决方案1】:

我愿意

command = strtok( message, " \n" );
file = strtok( NULL, " " );
bytestr = strtok( NULL, "\n" );
bytes = atoi( bytestr );
file_contents = bytestr + strlen(bytestr) + 1;

假设file_contentsbytestr 都是char *

【讨论】:

    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2019-01-02
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多