Так что я не очень хорошо знаком с C, но я разрабатываю приложение GLUT, которое читается в файле, который не чувствителен к регистру. Чтобы было проще, я хочу преобразовать свои строки во все строчные буквы. Я создал функцию makeLower, которая модифицирует переменную, которая была передана по ссылке.Покрытие строки неизвестной длины для проблем с нижним регистром
У меня есть Loop в методе makeLower, который, кажется, проходит часть первой итерации цикла while, а затем EXE сбой. Любые советы были бы замечательными, спасибо!
Выход:
C:\Users\Mark\Documents\Visual Studio 2010\Projects\Project 1\Debug>"Project 1.e
xe" ez.txt
Line is #draw a diamond ring
Character is #
Тогда ошибка "проект 1.exe перестал работать"
Код:
void makeLower(char *input[]){
int i = 0;
printf("Line is %s\n", *input);
while(input[i] != "\0"){
printf("Character is %c\n", *input[i]);
if(*input[i] >= 'A' && *input[i] <= 'Z'){
*input[i] = tolower(*input[i]);
}
i++;
}
}
int main(int argc, char *argv[]) {
FILE *file = fopen(argv[1], "r");
char linebyline [50], *lineStr = linebyline;
char test;
glutInit(&argc, argv);
while(!feof(file) && file != NULL){
fgets(lineStr , 100, file);
makeLower(&lineStr);
printf("%s",lineStr);
//directFile();
}
fclose(file);
glutMainLoop();
}
Вы пытались запустить его в отладчике? Кроме того, я могу дать вам подсказку: знаете ли вы, что делает оператор указателя указателя ('*'), например, в выражении '* input [i]'? Я предлагаю вам посмотреть на все это. :) –
Разве это не смеет переменную? Так как он был передан в функцию по ссылке? Я не очень хорош с C tbh. – meriley
Если у вас есть строка (указатель на 'char'), вы можете получить один символ с помощью' string [i] 'где' i' - число от 0 до длины строки минус единица или '* (строка + i) '. Последнее на самом деле то, что компилятор переводит 'string [i]' to. –