Показать сообщение отдельно

  #10  
Старый 25.04.2009, 19:24
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
С нами: 10139366

Репутация: 1502


По умолчанию

Цитата:
Сообщение от Kaimi  
Если не напутал, то вот поидее
Код:
#include <stdio.h>

void main()
{
FILE *in;
char ch;

in = fopen("in.txt", "r");

while(ch != EOF)
        {
         ch = fgetc(in);
         if((ch < 48 || ch > 57) && (ch < 65 || ch > 90) && (ch < 97 || ch > 122)) printf("%c", ch);
        }

fclose(in);
}
Ну вашу ж мать... ну кто так делает? и как так вообще можно? какого хрена оно вообще работает.. это ж..
короче, по пунктам:
1)юзинг неинициализированной переменной в ch
2)в случае достижения eof-а всё равно пытаемся что-то вывести
3)ну вот обязательно надо всё не по человечески сделать: вот что тебя сподвигло на написание "<48" вместо "<'0'"?

фикс этого кода, убивающий критические баги 1 и 2:
Код:
#include <stdio.h>

void main()
{
FILE *in;
char ch;

in = fopen("in.txt", "r");

while((ch = fgetc(in)) != EOF)
        {
         if((ch < 48 || ch > 57) && (ch < 65 || ch > 90) && (ch < 97 || ch > 122)) printf("%c", ch);
        }

fclose(in);
}
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием