mt-course
Оценивание (ИС)Оценивание (Тех.Зрение)Оценивание (КТ)
materials
materials
  • About
  • Для новичков
    • Основы C++
    • IDE/Compilers
    • Антипаттерны и способы улучшения кода
      • 0. Освобождение ресурсов
      • 1. Чтение данных из файла
      • 2. Открытие файлов
      • 3. Объявление переменных
      • 4. Выделение памяти
      • 5. Необдуманный код
      • 6. Глубокие if
      • 7. Длинные if
      • 8. Non-void функции
      • 9. Создание массивов
      • 10. Проверка формата файла
    • Git/GitHub
      • Git CLI
      • Git GUI
      • Git Web
      • Git в среде разработке
        • Visual Studio
        • CLion
        • Qt Creator
        • Visual Studio Code
      • CLion + GitHub
      • Работа с GitHub Actions
  • Настройки OpenMP/C++ threads
    • OpenMP
    • Сборка с OpenMP
    • C++ threads
  • Настройки CUDA и HIP
    • Установка CUDA SDK
    • Установка HIP SDK
    • Настройка проектов CUDA
    • Настройка проектов HIP
  • Настройки OpenCL
    • OpenCL
    • Проверка и установка платформы
    • Настройка проектов
    • Профилирование
      • Тестовый стенд
      • Профилирование через rcprof
      • Инструкция по профилированию в CodeXL
Powered by GitBook
On this page
  1. Для новичков
  2. Антипаттерны и способы улучшения кода

1. Чтение данных из файла

char arrLength(FILE *inputFile, unsigned int *arrSize)
{
	short int currDigit = fgetc(inputFile);
	unsigned char numLen = 0;
	unsigned int currNum = 0;
	while (currDigit != '\n')
	{
		if (47 < currDigit && currDigit < 58)
		{
			currNum = currNum * 10 + (currDigit - 48);
			numLen++;
		}
		else
		{
			return 1;
		}
		currDigit = fgetc(inputFile);
	}
	*arrSize = currNum;
	return 0;
}

int main(int argc, char *argv[])
{
	unsigned int arrSize;
	FILE *inputFile = fopen(argv[1], "r");
	if (arrLength(inputFile, &arrSize))
	{
		printf("Invalid file format!\n");
		return 1;
	}
	return 0;
}
Вариант реорганизации и исправления кода
int main(int argc, char *argv[])
{
	unsigned int arrSize;
	FILE *inputFile = fopen(argv[1], "r");
	if (fscanf(inputFile, "%d\n", &arrSize) != 1)
	{
		printf("Invalid file format!\n");
		return 1;
	}

	return 0;
}
Previous0. Освобождение ресурсовNext2. Открытие файлов

Last updated 11 months ago