读书人

一个关于读取文件的有关问题,一个小时

发布时间: 2012-02-09 18:22:27 作者: rapoo

一个关于读取文件的问题,一个小时之内收到正确答案,给60分,决不誓言
磁盘上有一个文件test2-2.in,其中存有一行字符串,将该字符串读到字符数组a中,然后将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。要求将重新排序的整个字符串以及下标值为偶数的元素显示在屏幕上并同时输出到文件test2-2.out中

希望代码详细点

[解决办法]
#include <stdlib.h>
#include <stdio.h>
int main()
{
char ch[1024];
char c;
int nposition = 0;
int size;
FILE* ifp = fopen( "test.in ", "r ");
FILE* ofp = fopen( "test.out ", "w ");

c=fgetc(ifp);
while (1)
{
ch[nposition++] = c;
if (c == EOF)
break;
c=fgetc(ifp);

}
fclose(ifp);
size = nposition - 1;

for (int i=0; i <size; i+=2)
for(int j=i+2; j <size; j+=2)
{
if (ch[i] > ch[j])
{
char temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
}
}
for (i=0; i <size; i++)
{
printf( "%c ", ch[i]);
fputc(ch[i], ofp);
}

return 0;




}
[解决办法]
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE* fp1;
FILE* fp2;
char line[1024];
fp1=fopen( "test2-2.in ", "rb ");
fp2=fopen( "test2-2.out ", "wb ");


while(!feof(fp1))
{
fgets(line,1024,fp1);
}

for(int i=0;i <sizeof(line);i=i+2)
{
char temp;
if(line[i]> line[i+2])
{
temp=line[i];
line[i]=line[i+2];
line[i+2]=temp;
}
}

for(i=0;i <sizeof(line);i++)
{
printf( "%c ",line[i]);
fprintf(fp2, "%c ",line[i]);
}

for(i=0;i <sizeof(line);i=i+2)
{
printf( "%c ",line[i]);
}

fclose(fp2);
fclose(fp1);

return 0;
}
[解决办法]
#include <stdio.h>
#include <math.h>
#include <string.h>
int myread(char* in)
{
FILE* fp;
*in = 0;
fp = fopen( "test2-2.in ", "rb ");
fscanf(fp, "%s ", in);
fclose(fp);
return strlen(in);
}
void mysort(char* in)
{
int len= strlen(in), i, j;
for( i = 0; i < len/2-1; i++ )
{
for( j = i+1; j < len/2; j++)
{
if(in[i*2] > in[j*2])
{
in[i*2] ^= in[j*2];
in[j*2] ^= in[i*2];
in[i*2] ^= in[j*2];
}
}
}
}

int mywrite(char* in)
{
int i = 0;
FILE* fp;
fp = fopen( "test2-2.out ", "wb+ ");

for( i = 0; i < strlen(in)/2; i++ )
{
printf( "a[%d] = %c\n ", i*2, in[i*2]);
fprintf(fp, "a[%d] = %c\t ", i*2, in[i*2]);
}
fclose(fp);
return 1;
}
main()
{
char test[100];
myread(test);
mysort(test);
mywrite(test);

}

读书人网 >C语言

热点推荐