char *buf;
scanf("%s", buf);
Bu yanlış kendi kişisel sık olacak hiçbir bellek buf
için tahsis edildiği için ben, SO olmuştur kimseye tavsiye ediyor. scanf
bir char *
değil, bir char (*)[n]
bekler çünkü
char buf[100];
scanf("%s", &buf);
Bu, yanlıştır. EOF
bir char
aralığında uymuyor çünkü
char c;
while ((c = getchar()) != EOF)
putchar(c);
Bu, yanlıştır. Bunun yerine int
kullanın. Bu
#define IN 0;
bir #define
sonunda noktalı virgül koymayın, Microsoft C gibi bazı derleyiciler bir uzantısı olarak uygulanmaktadır olsa
fflush(stdin);
fflush
, stdin
gibi akarsu girişi için tanımlanmamış. realloc
dön geçersiz yapacak çünkü
blk = realloc(blk, n);
realloc
başarısız olursa
,
blk
herhangi içeriğini kaybolacaktır. Sorunu çözmek için, dönüş değerini geçici olarak kopyalayın ve yalnızca geçici NULL değilse, nihai hedefe kopyalayın.
'void foo (T dizisi []) {sizeof (dizi)}' – EOF
Sorunuzun ilginç olduğunu düşünüyorum, ancak SO için değil. Belki programmers.stackexchange.com için – ppaulojr
İlki nedir? –