如何在C语言中切割字符串?

8

我需要找出一个字符数组是否以“ADD”开头。我知道要使用strcmp()函数,但我不知道如何获取前三个字符。我真的很讨厌处理C字符串。我该如何像char buffer[1024]一样截取一个字符数组?

2个回答

10

使用 strncmp("ADD", buffer, 3)

我不确定您所说的“片段”是什么意思,但是buffer内的任何指针都可以被视为一个片段。例如,如果buffer是以"ADD"开头的字符串,则char *slice = buffer + 3是删除了"ADD"后相同的字符串。注意slicebuffer的一部分,修改slice的内容将修改buffer的内容。反之亦然。

如果您所说的“片段”是指独立副本,则必须分配一个新的内存块,并将有趣的部分从buffer复制到您的内存中。库函数strdupstrndup非常方便。


如何指定一个比原始字符序列更短的偏移量和结束位置?例如:"hello" + 1 大小 3 (即 "ell");我认为这就是所谓的切片。幸运的是,strncmp 和 printf 提供了处理这种情况的选项,但将其显示为字符序列会更好。 - scape
strtok函数通常会在处理输入时使用'\0'替换分隔符,这种方法显然有一些缺点。 - scape
@scape 是的。如果你真的有问题,应该直接问出来。 - kmkaplan

8

使用strncmp。假设要测试的变量是buffer,只需

strncmp (buffer,"ADD",3);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接