Расширения файлов в c
Я хочу создать функции, которые проходят через каталог, выбрать все файлы с расширением *.csv и прочитать данные в них.
Я создал функцию, которая должна проверять каждое имя файла, которое является законным, проверяя, что строка заканчивается на .csv. Для этого я хочу перейти в конец массива char *. Я пробовал это:
который проходит через массив char * без поиска и "\ 0".
Компилятор предупреждает меня, что я сравниваю и int с char.
Я должен отметить, что я получаю имя файла, используя
спросил(а) 2011-01-31T13:48:00+03:00 10 лет, 9 месяцев назадpoint != "\0" сравнивает указатель с другим указателем, который не является тем, что вы хотите.
Вы хотите сравнить любые point точки с char со значением 0. Так что используйте, например,
Примечание. Если вы хотите найти конец строки, вы также можете сделать
Если вы хотите проверить, заканчивается ли строка .csv, вы также можете сделать что-то вроде
EDIT: фиксированное форматирование
ответил(а) 2011-01-31T14:01:00+03:00 10 лет, 9 месяцев назадВы должны разыменовать указатель, чтобы посмотреть на его значение:
Обратите внимание, что правая сторона является символьным литералом (одинарные кавычки), а не строкой (двойные кавычки). Это фиксирует предупреждение, которое вы получили при попытке использовать строку.
Также обратите внимание, что это действительно не нужно, чтобы найти конец строки, чтобы проверить это. Лучший подход:
Вызовите выше, например. ends_with ( "test.foo", "foo", 3), и вы получите 1 ответ, если совпадение не найдено, оно возвращает 0.
Это не быстрее, но это намного яснее, поскольку он работает на более высоком уровне, используя только известные стандартные строковые функции.
ответил(а) 2011-01-31T13:49:00+03:00 10 лет, 9 месяцев назадРазвернуть правильно, вы просто неправильно интерпретировали его код.
Многие (особенно новички, не хотят называть вас такими) не замечают (особенно при использовании на других языках, таких как JavaScript или PHP), что "и" не являются одинаковыми в С++. (И они тоже не на PHP, но разница здесь больше).
"a" - строка - по существу a const char[2] .
'a' - это единственный char - он просто a char .
То, что вы хотите, это сравнение одного символа с одним символом, поэтому вам нужно использовать '\0' .
Если вы используете "\0" , вы по существу сравниваете свой символ с адресом по существу пустой строки (которая является целым числом).
Основываясь на ответе @unwind, я предлагаю эту версию, чтобы проверить, заканчивается ли name конкретным extension . Обратите внимание, что входы объявляются как константные указатели, указывающие на const char .
Чтобы получить расширение из имени файла, вы можете использовать функцию strrchr , чтобы получить позицию последнего вхождения символа в строка:
(И посмотрите, что сказали другие, поскольку они затрагивают несколько проблем с вашим кодом.)
ответил(а) 2011-01-31T13:59:00+03:00 10 лет, 9 месяцев назадПопробуйте одиночные кавычки, а не двойные кавычки. Это ограничивает константу символом. Двойные кавычки для строк не являются символами. Для получения символа требуется точка разыменования с помощью *:
.C - файл исходного кода для языка C или C ++. C и C ++ являются объектно-ориентированными языками программирования и рассматриваются как языки программирования среднего уровня, используемые для разработки программных приложений. Инструментарий C ++, используемый для написания кода C ++, использует блокнот для написания кода и компилятор C ++, который преобразует текстовый файл в исходный код вместе с другими инструментами. Файлы с расширением .C доступны в текстовых редакторах, и пользователь может читать или записывать данные в этих файлах с помощью простого текстового редактора. Файл .C содержит фактический код, написанный пользователем, и другую информацию, такую как директивы и комментарии.
Программы, которые поддерживают C расширение файла
Следующий список содержит программы, сгруппированные по 3 операционным системам, которые поддерживают C файлы. Файлы с суффиксом C могут быть скопированы на любое мобильное устройство или системную платформу, но может быть невозможно открыть их должным образом в целевой системе.
Программы, обслуживающие файл C
Updated: 06/06/2020
Как открыть файл C?
Причин, по которым у вас возникают проблемы с открытием файлов C в данной системе, может быть несколько. К счастью, наиболее распространенные проблемы с файлами C могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.
Шаг 1. Установите Microsoft Visual Studio программное обеспечение
Наиболее распространенной причиной таких проблем является отсутствие соответствующих приложений, поддерживающих файлы C, установленные в системе. Этот легкий. Выберите Microsoft Visual Studio или одну из рекомендованных программ (например, EditPlus, Borland C++, Eclipse IDE) и загрузите ее из соответствующего источника и установите в своей системе. В верхней части страницы находится список всех программ, сгруппированных по поддерживаемым операционным системам. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт Microsoft Visual Studio и загрузите установщик.
Шаг 2. Проверьте версию Microsoft Visual Studio и обновите при необходимости
Если у вас уже установлен Microsoft Visual Studio в ваших системах и файлы C по-прежнему не открываются должным образом, проверьте, установлена ли у вас последняя версия программного обеспечения. Иногда разработчики программного обеспечения вводят новые форматы вместо уже поддерживаемых вместе с новыми версиями своих приложений. Это может быть одной из причин, по которой C файлы не совместимы с Microsoft Visual Studio. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью Microsoft Visual Studio.
Шаг 3. Свяжите файлы C/C++ Source Code Format с Microsoft Visual Studio
Если у вас установлена последняя версия Microsoft Visual Studio и проблема сохраняется, выберите ее в качестве программы по умолчанию, которая будет использоваться для управления C на вашем устройстве. Метод довольно прост и мало меняется в разных операционных системах.
Изменить приложение по умолчанию в Windows
- Щелкните правой кнопкой мыши на файле C и выберите « Открыть с помощью опцией».
- Выберите Выбрать другое приложение → Еще приложения
- Чтобы завершить процесс, выберите Найти другое приложение на этом. и с помощью проводника выберите папку Microsoft Visual Studio. Подтвердите, Всегда использовать это приложение для открытия C файлы и нажав кнопку OK .
Изменить приложение по умолчанию в Mac OS
Шаг 4. Убедитесь, что C не неисправен
Если вы выполнили инструкции из предыдущих шагов, но проблема все еще не решена, вам следует проверить файл C, о котором идет речь. Отсутствие доступа к файлу может быть связано с различными проблемами.
1. C может быть заражен вредоносным ПО - обязательно проверьте его антивирусом.
Если C действительно заражен, возможно, вредоносное ПО блокирует его открытие. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. Если сканер обнаружил, что файл C небезопасен, действуйте в соответствии с инструкциями антивирусной программы для нейтрализации угрозы.
2. Проверьте, не поврежден ли файл
3. Убедитесь, что у вас есть соответствующие права доступа
Иногда для доступа к файлам пользователю необходимы права администратора. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.
4. Убедитесь, что в системе достаточно ресурсов для запуска Microsoft Visual Studio
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами C/C++ Source Code Format. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами C, влияющими на более старые версии данного программного обеспечения.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла C мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле C.
Дана строка "filename.conf" , Как проверить Часть расширения?
Мне нужно кросс-платформенное решение.
вы должны убедиться, что вы заботитесь о имена файлов с более чем одной точкой. пример: c:\.directoryname\file.name.with.too.many.dots.ext не будет правильно обрабатываться strchr или find.
моим любимым будет повысить библиотеку файловой системы которые имеют функцию расширения (пути)
это слишком простое решение?
лучший способ-не писать код, который это делает, а вызывать существующие методы. В windows,PathFindExtension метод, вероятно, самый простой.
Так почему бы вам не написать свой собственный?
ну, возьмем пример strrchr, что происходит, когда вы используете этот метод в следующей строке "c:\program файлы\AppleGate.Net\readme"? Является ли расширение" .Net\readme"? Легко написать что-то, что работает для нескольких примеров, но может быть много труднее написать что-то, что работает для всех случаев.
предполагая, что у вас есть доступ к STL:
Edit: это кросс-платформенное решение, так как вы не упомянули платформу. Если вы находитесь конкретно в Windows, вы захотите использовать определенные функции Windows, упомянутые другими в потоке.
кто-то еще упомянул boost, но я просто хотел добавить фактический код для этого:
на самом деле STL может сделать это без особого кода, я советую вам узнать немного о STL, потому что он позволяет вам делать некоторые причудливые вещи, в любом случае это то, что я использую.
это решение всегда будет возвращать расширения даже на строки вроде "этого.а.б.С. д.е.С. МР3", если он не может найти расширение, он вернется "".
на самом деле, самый простой способ-это
одно нужно помнить: если '.' не существует в filename, ext будет NULL .
Я сам наткнулся на этот вопрос сегодня, хотя у меня уже был рабочий код, я понял, что в некоторых случаях он не будет работать.
хотя некоторые люди уже предложили использовать некоторые внешние библиотеки, я предпочитаю писать свой собственный код для целей обучения.
некоторые ответы включали метод, который я использовал в первую очередь (поиск последнего "."), но я вспомнил, что в linux скрытые файлы / папки начинаются с ".". Поэтому, если файл file скрыт и имеет нет расширения, все имя файла будет принято за расширение. Чтобы избежать этого, я написал этот кусок кода:
Я не тестировал это полностью, но я думаю, что это должно работать.
Я думаю, что это только Windows (Platform SDK)?
использование std:: string find / rfind решает эту проблему, но если вы много работаете с путями, то вы должны посмотреть на boost::filesystem::path, так как это сделает ваш код намного чище, чем возиться с необработанными строковыми индексами/итераторами.
Я предлагаю boost, поскольку это высококачественная, хорошо протестированная (с открытым исходным кодом и коммерчески) бесплатная и полностью портативная библиотека.
для строк типа массива char вы можете использовать следующее:
может обрабатывать пути к файлам в дополнение к именам файлов. Работает с C и C++. И кросс-платформенный.
вы можете использовать приведенный выше код в приложении на C++, как показано ниже:
последний пункт в некоторых случаях папка a присваивается имени файла в качестве аргумента и включает точку в имени папки функция будет возвращать точку папки, так что лучше сначала пользователю проверить, что данное имя является именем файла, а не именем папки.
У вас есть проблема с открытием .C-файлов? Мы собираем информацию о файловых форматах и можем рассказать для чего нужны файлы C. Дополнительно мы рекомендуем программы, которые больше всего подходят для открытия или конвертирования таких файлов.
Для чего нужен файловый формат .C?
Главная ассоциация расширения файлового имени .c принадлежит типу файлов "Исходный код Си/Си++" (C/C++ Source Code, C). Си — один из старейших и славноизвестных языков программирования (на языке Си была полностью написана ОС UNIX), в то время как Си++ появился как серьезный шаг вперед по сравнению с классикой программирования на Си. Вместе с Си++ в арсенал программистов вошли объектно-ориентированное программирование, парадигма общего программирования, модульность, раздельная компиляция и т.д.
Файл .c — это текстовый файл с исходным кодом Си/Си++, как правило, хорошо отформатированным и снабженным подробными комментариями. Любой файл .c можно просматривать как текст, и такие файлы зачастую пишутся и редактируются прямо в текстовых редакторах с функцией подсветки синтаксиса.
Проект на Си/Си++ может включать множество файлов .c, каждый из которых в большинстве случаев будет идти в паре с соответствующим ему файлом заголовков (.h). Чтобы получить исполняемый объектный код, все файлы с исходным кодом (.c) должны быть скомпилированы соответствующим компилятором под нужную архитектуру.
Традиционно расширение .c также используется для обозначения файлов с исходным кодом на других Си/Си++-подобных языках, таких как Objective-C (Apple), C♯ (Microsoft) и др.
Кроме того, расширение .c также служит для обозначения файлов с исходным кодом на языке программирования Lite-C, будучи ассоциированным с типом файлов "Исходный код Lite-C" (C). Lite-C основан на синтаксисе Си/Си++ и был разработан Atari/Conitec специально для создания трехмерных игр и мультимедийных приложений для MS Windows. В Lite-C был добавлен большой блок объектов, присущих именно играм.
Файл с исходным кодом Lite-C (.c) — это текстовый файл с набором инструкций в синтаксисе Lite-C. Программы на Lite-C в виде файлов .c должны быть правильно скомпилированы перед тем, как их можно будет запускать.
Читайте также: