谁能帮我看看这程序哪错了data.in 里为QWrrTerrt,将前四位的大写转为小写,其余不变,输出qwrrTerrt
#include<stdio.h>
#include<string.h>
#define N 100
int main()
{
int i;
int t;
char a[N], ch;
FILE *fp;
fp =fopen("data.in", "r");
if(fp == NULL)
{
fprintf(stderr,"CAN'T OPEN FILE!\n");
return -1;
}
ch = 1;
for(i = 0; (ch= fgetc(fp)) != EOF; i ++){
printf("%c",ch);
ch = a[i];
}
for (i = 0; i <= 3; i++){
if(ch >= 'A'||ch <= 'Z'){
ch += 32;
}
printf("%c",ch);
if(feof(fp))
break;
}
printf("\n");
fclose(fp);
return 0;
}
[解决办法]
int i;
int t;
char a[N]={0}, ch;
FILE *fp;
fp =fopen("d:\\data.in", "r");
if(fp == NULL)
{
fprintf(stderr,"CAN'T OPEN FILE!\n");
return -1;
}
ch = 1;
for(i = 0; (ch= fgetc(fp)) != EOF; i ++)
{
printf("%c",ch);
a[i] = ch; // 一个个保存在a数组中
}
printf("\n");
for (i = 0; i <= strlen(a); i++) // for语句遍历整个词
{// 下面的判断是 && ,而不是
[解决办法]
if( a[i] >= 'A'&& a[i] <= 'Z' && i < 3 )
{// 变换前4个需要变换的字母
a[i] += 32;
}
printf("%c",a[i]);
}
printf("\n");