Я пытаюсь выполнить итерацию через заданный массив символов и сравнить его с отсканированным в одиночном символе. Если отсканированный символ находится в массиве, я хочу добавить его в массив 2d, если он не находится в массиве, я хочу обработать ошибку.Поиск массива char для char
Мой код в настоящее время
char c;
char legalChar[] = "./\\[email protected]\n";
int rowCount = 0;
int colCOunt = 0;
int i = 0;
FILE * map;
while (c = fgetc(map), c != EOF) {
while (i < (sizeof(legalChar))){
if (c == legalChar[i]){
if (c == '\n'){
/*Add 1 to number of rows and start counting columns again */
rowCount++;
colCount = 0;
}
else {
/*would have code to add char to 2d array here */
colCount++;
}
}
i++;
}
Я планировал иметь
if (c != legalChar[i]){
/*Error handling */
}
, но это не работает, потому что он просто прыгает в это, если заявление на каждой итерации.
Вывод программы в настоящий момент определяется colCount 1 и rowCount остается равным 0. Все символы, которые повторяются, находятся внутри массива legalChar [], поэтому я не уверен, что я делаю неправильно.
Любые советы были бы весьма полезными.
Благодаря
'EOF' никогда не совпадает с символом' char', а '' '' 'вместо' int'. –
Вы можете использовать 'if (strchr (legalChar, c)) {/ * char является законным * /} else {/ * char не является законным * /}' для проверки символа без написания цикла самостоятельно. – caf
Вы пытались скомпилировать свой код? : 'ошибка C2065: 'colCount': необъявленный идентификатор' Ошибка с неправильным именем переменной. – boleto