C中的子串(数组中剩余的将会发生什么)

时间:2016-04-03 08:05:25

标签: c arrays

我已经给出了为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;
}

然而,代码工作正常,但是数组中其余字符会发生什么?

1 个答案:

答案 0 :(得分:1)

阵列的其余部分保持不变;只是你将数组中的一个字符改为null(&#39; \ 0&#39;)。因此,如果您尝试在a[endAt]字符之后(或之前)访问任何其他字符,您就可以这样做。

查看Your code with some extra at Ideone.com

然而,正如您所看到的,当您尝试打印原始阵列时,它将被打印,直到第一个&#39; \ 0&#39;字符。