所以我对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