所以我對C不是很好,但是我設計了一個讀取不區分大小寫的文件的GLUT應用程序。爲了更容易,我想將我的字符串轉換爲全部小寫字母。我做了一個函數makeLower,它正在修改一個通過引用傳入的變量。隱藏未知長度的字符串到小寫問題
我在makeLower方法中有一個While循環,它似乎通過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]'中?我建議你看看所有這些。 :) – 2012-01-27 07:07:54
它不尊重變量嗎?既然它是通過引用傳遞給函數的?我對C tbh不太瞭解。 – meriley 2012-01-27 07:16:58
如果你有一個字符串(指向char的指針),你可以通過使用'string [i]'來獲得單個字符,其中'i'是一個介於0和字符串長度之間的數字減1,或者*(字符串+我)'。後者實際上是編譯器將'string [i]'轉換爲的內容。 – 2012-01-27 07:28:21