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 []切片功能?
答案 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中的字符串,它们都是不可变的(意味着你不能修改原始字符串但需要先复制一份)。
您可以使用strdup
或strcpy
复制字符串。这两者之间的区别是strdup
将为您分配内存,您需要记住在完成内存后释放内存。
使用strcpy
,您需要在调用之前先分配内存(如果知道长度)。您不需要使用strcpy
释放内存。