关于字符串的问题
程序代码:[local]1[/local]
以行为单位把字符串中的第一个字符的ASCII值加第二个字符的ASCII值, 得到第一个新的字符, 第二个字符的ASCII值加第三个字符的ASCII值,得到第二个新的字符, 以此类推一直处理到最后第二个字符, 最后一个字符的ASCII值加原第一个字符的ASCII值, 得到最后一个新的字符, 得到的新字符分别存放在原字符串对应的位置上,之后把已处理的字符串逆转后仍按行重新存入字符串数组xx中。
在vc++6.0环境下运行:问题是输出结果和文件中存储的结果不一样呢?主要是分行的问题??求解释,机试得分为0啊,考试在即啊。。。。输入文件和程序等其他事务均在压缩文件里! 先感谢各位大侠啦。。。
#include <stdio.h>
#include <string.h>
unsigned char xx[50][80] ;
int maxline = 0 ; /* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void ChA(void)
{ int i,j,k,len;
char ch,temp;
for(i=0;i<maxline;i++)
{len=strlen(xx[i]);
ch=xx[i][0];
for(j=0;j<len-1;j++)
xx[i][j]=xx[i][j]+xx[i][j+1];
xx[i][len-1]=ch+xx[i][len-1];
for(k=0,j=len-1;k<len/2;k++,j--)
{temp=xx[i][k];
xx[i][k]=xx[i][j];
xx[i][j]=temp;}
//xx[i][len]='\n';
}}
void main()
{
if(ReadDat()) {
printf("数据文件IN.DAT不能打开!\n\007") ;
return ;
}
ChA() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp ;
int i = 0 ;
char *p ;
if((fp = fopen("IN.dat", "r")) == NULL) return 1 ;
while(fgets(xx[i], 80, fp) != NULL) {
p = strchr(xx[i],'\n') ;
if(p) *p = 0 ;
i++ ;
}
maxline = i ;
fclose(fp) ;
return 0 ;
}
void WriteDat(void)
{
FILE *fp ;
int i ;
fp = fopen("OUT.dat", "w") ;
for(i = 0 ; i < maxline ; i++) {
printf("%s\n", xx[i]) ;
fprintf(fp, "%s\n", xx[i]) ;
}
fclose(fp) ;
}
[ 本帖最后由 彩色、恋月 于 2012-3-11 15:52 编辑 ]








啊哈哈。。。