Язык Си - руководство для начинающих.

Ответы.

1. Должна быть директива #include <stdio.h> для определения ее файлов. Следует описать указатель fp файла: FILE *fp; функция fopen( ) должна иметь вид fopen("желе", "w"), или, может быть, включать "а" . Порядок аргументов в fputs( ) должен быть обратным. Функция fclose( ) требует указателя файла, а не имени файла: fclose(fp).

2. Она будет открывать файл, заданный как аргумент командной строки, и выво дить на печать все цифры в файле. Программа должна проверять (но не делает этого), не аргумент ли это командной строки.

3. Первое выражение правильно, так как с[i] имеет значение типа char. Второе выражение не выводит компьютер из строя, но может давать непредсказуемый результат. Причина в том, что isalpha( ) является макроопределением, у которого, по всей вероятности, аргумент появляется дважды в определяющем выражении (проверка на принадлежность к регистру строчных букв, а зачем - прописных букв) и это дает в результате два увеличения i. Лучше всего избегать использования оператора увеличения в аргументе макрофункции.

4.

#include <stdio.h>

#include <ctype.h>

#define issign(c) (((c) == '-' || (c) == '+') ? (1) : (0)) atoi(s);

Char *s;

{

Int i = 0;

Int n, sign;

While(isspace(s[i])).

I ++; /* пропуск пустого символа */

Sign = 1;

If(issign(s[i]))     /* установка необязательного знака   */

Sign = (s[i++] == '+') ? 1 : -1;

For(n = 0; isdigit(s[i]); i++).

    n = 10*n + s[i] - '0';

Return(sign * n);

}

5. Предположим, что wine является именем структуры. Эти операторы, надлежащим образом расположенные в программе, будут выполнять данную работу.

Struct wine *ptrwine;

Char *calloc( );

Ptrwine = (struc wine *) calloc(100, sizcof(struct wine));