Вы не можете инициализировать массивы из других массивов или указателей. И вы также не можете назначить массивы.
Таким образом,
char destino[4] = arg_struct->porto;
является недействительным.
Есть два способа решения этой проблемы для вас:
Положитесь на тот факт, что массивы естественным образом распадаются на указатели на их первый элемент. То есть, если ожидается указатель, то arg_struct->porto
равно &arg_struct->porto[0]
. Это означает, что вы можете
char *destino = arg_struct->porto;
вообще не иметь никакой переменной destino
и передавать arg_struct->porto
непосредственно на ваши strcmp
вызовы:
if (strcmp(arg_struct->porto, "BUS") == 0) ...
[ 1118] Также обратите внимание, что strcmp
возвращает ноль , если две строки равны. Вот причина сравнения равенства с нулем выше.
Невозможность присвоить массиву также является причиной того, что такие операторы, как
parque[i][j].nSerie = "";
, потерпят неудачу.
Если вы хотите, чтобы массивы работали как пустые строки, все, что вам нужно сделать, это установить первый элемент в нулевой терминатор:
parque[i][j].nSerie[0] = '\0'; // Make string "empty"
Если вы хотите очистить все байты массива, вы необходимо использовать функцию memset
:
memset(parque[i][j].nSerie, 0, sizeof parque[i][j].nSerie); // "Clear" array
В установке Java/Maven мы используем в качестве иерархии проекта:
project/src/main/java/Package/Class.java
project/src/test/java/Package/ClassTest.java
project/src/main/resources/Package/resource.properties
project/src/test/resources/Package/test_resource.properties
И для ответа на вопрос: Я поместил бы файлы SQL наряду с ресурсами под src/main/resources.
можно хотеть взглянуть на этот поток .
Это - небольшой рифф по начальному вопросу, но возможно чем более сложен SQL, тем больше он принадлежит базы данных (или сервисного слоя) а не в Вашем коде Java.
Иначе, поскольку код назревает, , проблемы как это возникают.
Я испытал бы желание поместить SQL-запросы в специализированное SQL
папка под src. Это разделяет код Java от SQL:
+ src
+ java
+ sql
- Package/Class.sql
+ test
, Кроме того, Вы могли поместить их в простые файлы свойств с помощью вышеупомянутой структуры:
getUserByName = select * from users where name=?
getUserByEmail = select * from users where email=?
getUserByLongQuery = select * from users where email=? \
and something = ? \
where something_else = ?
кроме того, я думаю, что стоит упомянуть, что можно поместить многострочные строки в класс Java, если Вы предпочитаете следовать тем маршрутом:
class MyClass {
MY_QUERY = "select * from users where email = ? " +
"and something_else = ?";
}
Я полностью соглашаюсь с boutta. Знаток устанавливает хорошую норму для src управления папкой. Вы рассмотрели хранение Вашего SQL в XML? Хранение запросов в единственном файле может помочь управлять SQL. Моя первая интуиция является чем-то простым:
<?xml version="1.0" encoding="UTF-8"?>
<queries>
<query id="getUserByName">
select * from users where name=?
</query>
<query id="getUserByEmail">
select * from users where email=?
</query>
</queries>
Для парсинга файла используйте xpath или даже SAX для создания карты запросов, включенных идентификатором для быстрых поисков запроса.