2016-04-03 13 views
-1

Verilen girdi için C alt dizesi oluşturmak için bir görev verdim. Aşağıdaki gibi kod.C'deki substring (dizide kalana ne olacak)

#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; 
} 

Ancak bu kod düzgün çalışıyor, ancak dizideki diğer karakterlere ne olacak?

+0

Hala oradalar, o terminatörün üzerine yazdığınızla daha az (girişinizin aklı başında olduğunu varsayarak). – WhozCraig

+0

scanf kullanın ("% 999s", a); veya fgets (a, 100, stdin); hiçbir zaman scanf% s kullanmayın. – 12431234123412341234123

cevap

1

Dizinin geri kalanı aynı kalır; dizideki karakterlerden birini null ('\ 0') olarak değiştirdiniz. Yani a[endAt] karakterinden (veya öncesinde) herhangi bir karaktere erişmeye çalışırsanız, bunu yapabilecektiniz.

Gözden geçirin Your code with some extra at Ideone.com.

Gördüğünüz gibi, orijinal diziyi yazdırmaya çalıştığınızda, yalnızca ilk '\ 0' karakterine kadar yazdırılır.