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

Ответы

Ответы

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)); 

Оглавление книги


Генерация: 0.081. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз