Проверка string на число - C (СИ)
Формулировка задачи:
Здравствуй, форумчанин!
У меня есть string с данными.
Файл:
12
2
пыфрп
145
512
прфы
42
ап
Вот. Как мне сделать проверку каждой строки?
Мне нужно посмотреть, в данной строке находится цифра, или слово.
я считал эти данные из файла.
Стринг я не могу проверить по аски коду.
Есть ли еще способы?
int main () { string line; int count = 0; ifstream myfile ("example.txt"); if (myfile.is_open()) { while ( myfile.good() ) { getline (myfile,line); cout << line << endl; if(line >= '0' && line <= '9') // error { count ++; } } myfile.close(); } else cout << "Unable to open file"; cout << count; _getch(); return 0; }
переделал на char
как проверить, является строка числом?
int main () { const int charlength = 1024; char buffer[charlength]; int count = 0; FILE *myfile = fopen ("example.txt", "r"); if (myfile) { while ( !feof(myfile) ) { fgets (buffer, charlength , myfile); printf(buffer); if (buffer) count++; } } else printf ("Unable to open file"); printf("\r\n%d", count); _getch(); return 0; }
Решение задачи: «Проверка string на число»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define CHARLEN 1024 int isNum(char *str) { int i = 0; int rez = 1; if (isdigit(*str) || *str == '+' || *str == '-') { for (i = 1; i < strlen(str) && str[i] != '\n'; ++i) { if (!isdigit(str[i])) { rez = 0; break; } } } else rez = 0; return rez; } int main() { char buffer[CHARLEN]; int count = 0; FILE *myfile = fopen("ex.txt", "r"); if (myfile) { while (fgets(buffer, CHARLEN, myfile)) { printf("Loaded => %s", buffer); if (buffer[0] != '\r' && buffer[0] != '\n') count++; if (isNum(buffer)) printf("--> is num\n"); } } // else printf("Unable to open file"); printf("\r\n%d", count); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с памятью, строками и цифрами.
- Определяем максимальную длину строки в 1024 символа.
- Создаем функцию isNum, которая принимает строку и возвращает 1, если строка является числом, и 0 в противном случае.
- Внутри функции isNum инициализируем переменные i = 0 и rez = 1.
- Проверяем первый символ строки на число или знак, и если это так, то переходим к следующему шагу. Если нет, то сразу возвращаем 0.
- В цикле проходим по всем символам строки, кроме последнего, и проверяем каждый символ на число. Если символ не является числом, то возвращаем 0 и прерываем цикл.
- После цикла возвращаем 1.
- В функции main открываем файл
ex.txt
для чтения. - В цикле считываем строки из файла и выводим их на экран.
- Если первая цифра или знак в строке не являются возвратом каретки или символом новой строки, увеличиваем счетчик count.
- Если строка является числом, выводим сообщение
--> is num
. - После окончания чтения файла выводим количество строк, которые являются числами.
- В случае ошибки открытия файла выводим сообщение об ошибке.
- Выполняем все действия в функции main и возвращаем 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д