Как подать символ завершения строки - C (СИ)
Формулировка задачи:
Начал изучать с. Эта программа должна подсчитывать количество символов.
Во-первых, программа неправильно работает, так как (как я понял) ей не подают символ завершения строки.
Во-вторых, как подать символ завершения строки ? Пытался писать -1, так как выяснил, что значение eof равно -1, но ничего не произошло.
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
nc++;
printf ("%ld\n", nc);
}Решение задачи: «Как подать символ завершения строки»
textual
Листинг программы
void checkArr(int Z[], int &size, int &j, char str[]) {
int i = 0;
for (int num=0;;)
{
while (str[i]!='\0'&&str[i]==' ')
i++;
if (str[i]=='\0') break;
if (str[i+1]!=' '&&str[i+1]!='\0') {
num=num*10+(str[i]-48);
i++;
}
else {
Z[size]=num*10+(str[i]-48);
size++;
i++;
num=0;
j++;
}
}
}
Объяснение кода листинга программы
- В функции
checkArrпередается массив целых чиселZ, размер которого хранится в переменнойsize. - Переменная
jинициализируется значениемsize. - В функции также передается строка
str, в которой содержатся числа, разделенные пробелами. - В начале функции инициализируется переменная
iсо значением 0. - Далее в цикле
forпроисходит считывание чисел из строкиstr. - Внутри цикла в цикле
whileпроисходит поиск следующего числа в строке. - Если в строке найден ноль, то цикл прерывается.
- Если после пробела найдено число, то оно добавляется в массив
Zи увеличивается размер массиваsize. - Если после пробела не найдено число, то в массив
Zдобавляется предыдущее число и увеличивается индексj. - Если в строке после пробела не найдено число, то в массив
Zдобавляется ноль. - После окончания цикла
forв переменнойnumостается последнее прочитанное число. - Это число добавляется в массив
Zи увеличивается размер массиваsize. - Индекс
jувеличивается на единицу. - Если в строке после последнего числа не найдено пробелов, то в массив
Zдобавляется ноль. - Функция возвращает
jкак количество прочитанных чисел. - Функция может использоваться для разбиения строки на числа и записи их в массив.
- Функция может использоваться для считывания чисел из строки в массив, разделенных пробелами.
- Функция может использоваться для чтения чисел из строки, разделенных пробелами, и записи их в массив.
- Функция может использоваться для чтения чисел из строки и записи их в массив, разделенных пробелами.
- Функция может использоваться для чтения чисел из строки и записи их в массив, разделенных пробелами, и подсчета количества прочитанных чисел.