字符串在C中截断

时间:2018-02-01 03:57:31

标签: c python-3.x

def slicing(string, integer):
    original_str = string
    if len(string) <= integer:
        return 0
    elif len(string) > integer:
        string = string[:integer]
        num = len(original_str) - len(string)
        print(string)
        return num

C中是否没有str []切片功能?

2 个答案:

答案 0 :(得分:1)

C中的字符串只是char s的以空字符结尾的数组,因此从中间开始,您需要做的就是添加一个偏移量; str[x:]只是str + x

如果您不想一直走到字符串的末尾,则需要复制您感兴趣的子字符串; POSIX 2008中有一个strndup()函数,它使这个变得微不足道,只有strndup(str, length)。把它放在一起:

strndup(str + x, y);

我不确定Windows是否有strndup,但如果不是,那么自己编写就很容易了。如果您正在使用glib,则可以使用g_strndup函数。

答案 1 :(得分:0)

C中的字符串在某种程度上类似于python中的字符串,它们都是不可变的(意味着你不能修改原始字符串但需要先复制一份)。

您可以使用strdupstrcpy复制字符串。这两者之间的区别是strdup将为您分配内存,您需要记住在完成内存后释放内存。

使用strcpy,您需要在调用之前先分配内存(如果知道长度)。您不需要使用strcpy释放内存。