2014-08-27 104 views
0

我是新手c程序员,我在我的程序循环中遇到问题,循环在字符“字母”中创建字母'A'到'Z',但循环不停止在字母'Z'它只是无限期地继续下去,有人可以帮助我吗?For循环忽略测试表达式

在此先感谢

#include <stdio.h> 
#include <stdlib.h> 

FILE * fptr; 

int main() 
{ 
    char letter; 
    int i; 

    fptr = fopen("C:\\Users\\Wim\\Documents\\C\\random read write to      
     file\\letters.txt", "w+"); 

    if (fptr == 0) 
    { 
     printf("There was a error while opening the file! "); 
     exit(1); 
    } 

    for (letter = 'A'; letter <= 'Z'; letter++)//This is the offending part of the code! 
    { 
     fputc(letter, fptr); 
    } 

    puts ("You just wrote the letters A through Z"); 

    fseek(fptr, -1, SEEK_END); 
    printf("Here is the file backwards :\n"); 

    for (i= 26; i > 0;i++) 
    { 
     letter = fgetc(fptr); 
     fseek(fptr, -2, SEEK_CUR); 
     printf("The next letter is %c .\n", letter); 
    } 

    fclose(fptr); 

    return 0; 

} 
+0

你真的有在目录名换行? – Barmar 2014-08-27 21:44:55

+0

@Barmar我认为它的目录名称和换行空间的副作用 – TerryG 2014-08-27 21:54:21

+0

SO不会在代码块中执行换行。希望他没有使用文字处理器来编辑他的节目源。 – Barmar 2014-08-27 21:56:02

回答

3

这个循环

for (i= 26; i > 0;i++) 

是错误的。必须有

for (i= 26; i > 0; i--) 

此外,我会写这个循环中通过以下方式

for (i = 'Z' - 'A' + 1; i > 0; i--) 
+0

谢谢,它现在可以工作 – 2014-08-27 21:49:05

+0

因为'i'不用于循环内的任何事情,所以OP可能很好地将它固定到'for(i ='A'; i <='Z'; i ++)' – 2014-08-27 21:49:18