2016-04-03 30 views
-1

私はCで与えられた入力のためのサブ文字列を生成するタスクを与えました。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

彼らはまだそこにいるので、あなたがそのターミネーターで上書きしたものは少なくなります(入力が正常だと仮定して)。 – WhozCraig

+0

scanf( "%999s"、a);を使用します。またはfgets(a、100、stdin);制限なしでscanf%sを使用しないでください。 – 12431234123412341234123

答えて

1

残りの配列は同じままです。配列の文字のうちの1つをnull( '\ 0')に変更しただけです。だから、a[endAt]文字の後(またはその前)に他の文字にアクセスしようとすると、そうすることができます。

Your code with some extra at Ideone.comを確認してください。

しかし、元の配列を印刷しようとすると、最初の '\ 0'文字までしか印刷されません。

関連する問題