我已经给出了为C中给定输入生成子字符串的任务。代码如下。
#include<stdio.h>
int main(){
char a[1000];
char *sub;
int startFrom = 0;
int endAt = 0;
printf("Enter the String: ");
scanf("%s", a);
printf("Start From? ");
scanf("%d", &startFrom);
printf("End At? ");
scanf("%d", &endAt);
sub = &a[startFrom];
a[endAt] = '\0';
printf("%s\n", sub);
return 0;
}
然而,代码工作正常,但是数组中其余字符会发生什么?
答案 0 :(得分:1)
阵列的其余部分保持不变;只是你将数组中的一个字符改为null(&#39; \ 0&#39;)。因此,如果您尝试在a[endAt]
字符之后(或之前)访问任何其他字符,您就可以这样做。
查看Your code with some extra at Ideone.com。
然而,正如您所看到的,当您尝试打印原始阵列时,它将被打印,直到第一个&#39; \ 0&#39;字符。