我正在尝试创建自己的切片函数,但是对于像(0,15)这样的值,它会在末尾打印出荒谬的值。对于其他输入,它工作正常。下面是我的代码:
#include<stdio.h>
void slice(int a, int b, char *str) {
char new[b - a];
for (int i = 0; i < b - a; i++) {
new[i] = str[a + i];
}
puts(new);
}
int main() {
char str[] = { "My name is Ayush Anand" };
slice(0, 15, str);
return 0;
}
你怎么了?
1条答案
按热度按时间z31licg01#
应该有多余的空间给一个空终止符。所以,在第(b - a)个索引处,加一个。
正如其中一个注解中提到的,
a > b
是无效的,因此,在声明新字符串之前添加一个条件。