У меня есть функция, которая принимает массив символов и ищет таблицу для этого конкретного символа, и это соответствующее значение. Я получаю char для поиска с пользовательского ввода с помощью fgets, и когда я передаю буфер функции lookUp, он включает нулевой завершающий символ, который вызывает проблему, поскольку lookUp ищет символ + нулевой терминатор. Мой вопрос в том, есть ли способ «разбить» массив символов его нулевого терминатора или может быть другой способ справиться с этим? Благодарю.Передача массива символов, но не включая нулевой завершающий символ
//lookUp function
//This function was provided for us, we cannot change the arguments passed in.
Symbol* lookUp(char variable[]){
for (int i=0; i < MAX; i++){
if (strcmp(symbols[i].varName, variable)==0){
Symbol* ptr = &symbols[i];
return ptr;
}
}
return NULL;
}
//main
int main(){
char buffer[20];
Symbol *symbol;
printf("Enter variable to lookup\n");
while (fgets(buffer, sizeof(buffer), stdin)!= NULL){
printf("buffer is : %s\n", buffer);
int i = strlen(buffer);
printf("length of buffer is %d\n", i);
symbol = lookUp(buffer);
printf("Passed the lookup\n");
if (symbol == NULL){
printf("Symbol is null\n");
}
}
}
Выход, символ НЕ должен быть пустым здесь.
Enter variable to lookup
a
buffer is : a
length of buffer is: 2 //this should only be 1
Passed the lookup
Symbol is null