在网上看了下处理方式,大家都说重新复制出来重新保存下就好了。但是目前问题是...我这里是个一个工程,几十个文件,如果这样弄。。我一会就晕了。。想问下有木有什么批量的方法?
7 个解决方案
#1
QQ粘贴的代码.
#2
。。。这是之前别人提交的代码。。不是QQ....
#3
我百度了一下, linux下有mac2unix这个工具, 写一个脚本是可以处理的.
#4
谢谢了,我是windows下的,请问有什么好办法么?这个工程在VC6.0下是可以正常用的,不过现在习惯2008了,回到VC6总觉得不习惯。
#5
这个一般是编码不一致造成的,我遇到过,但是单个文件代码量比较小,删除换行符合所有空格,重新格式化代码就好了。
#6
Unix/Linux换行符是'\n'
Windows换行符是'\r\n'
Mac换行符是'\r'
编个小程序比如Mac2Unix.c将命令行给出的文件中所有'\r'替换为'\n',然后利用批处理的for语句处理指定目录下所有文件即可。
Mac2Unix.c
比如在cmd窗口里面输入以下命令,可以用c:\mydir\Mac2Unix.exe处理所有c:\tmp\目录下及其所有子目录下的*.c文件
for /f %f in ('dir /a-d /b /s c:\tmp\*.c') do c:\mydir\Mac2Unix.exe %f
Windows换行符是'\r\n'
Mac换行符是'\r'
编个小程序比如Mac2Unix.c将命令行给出的文件中所有'\r'替换为'\n',然后利用批处理的for语句处理指定目录下所有文件即可。
Mac2Unix.c
#include <stdio.h>
FILE *f;
int c1,c2;
int main(int argc,char *argv[]) {
if (argc!=2) {
printf("Usage: Mac2Unix filename\n");
return 1;
}
f=fopen(argv[1],"rb+");
if (NULL==f) {
printf("Can not open file [%s]!\n",argv[1]);
return 2;
}
while (1) {
c1=fgetc(f);
if (EOF==c1) break;
if ('\r'==c1) {
c2=fgetc(f);
if ('\n'!=c2) {
fseek(f,-2L,SEEK_CUR);
fputc('\n',f);
fseek(f,1,SEEK_CUR);
}
if (EOF==c2) break;
}
}
fclose(f);
return 0;
}
比如在cmd窗口里面输入以下命令,可以用c:\mydir\Mac2Unix.exe处理所有c:\tmp\目录下及其所有子目录下的*.c文件
for /f %f in ('dir /a-d /b /s c:\tmp\*.c') do c:\mydir\Mac2Unix.exe %f
#7
上帖中代码略改
#include <stdio.h>
FILE *f;
int c1,c2;
int main(int argc,char *argv[]) {
if (argc!=2) {
printf("Usage: Mac2Unix filename\n");
return 1;
}
f=fopen(argv[1],"rb+");
if (NULL==f) {
printf("Can not open file [%s]!\n",argv[1]);
return 2;
}
while (1) {
c1=fgetc(f);
if (EOF==c1) break;
if ('\r'==c1) {
c2=fgetc(f);
if (EOF==c2) {
fseek(f,-1L,SEEK_CUR);
fputc('\n',f);
break;
}
if ('\n'!=c2) {
fseek(f,-2L,SEEK_CUR);
fputc('\n',f);
fseek(f,1,SEEK_CUR);
}
}
}
fclose(f);
return 0;
}
#1
QQ粘贴的代码.
#2
。。。这是之前别人提交的代码。。不是QQ....
#3
我百度了一下, linux下有mac2unix这个工具, 写一个脚本是可以处理的.
#4
谢谢了,我是windows下的,请问有什么好办法么?这个工程在VC6.0下是可以正常用的,不过现在习惯2008了,回到VC6总觉得不习惯。
#5
这个一般是编码不一致造成的,我遇到过,但是单个文件代码量比较小,删除换行符合所有空格,重新格式化代码就好了。
#6
Unix/Linux换行符是'\n'
Windows换行符是'\r\n'
Mac换行符是'\r'
编个小程序比如Mac2Unix.c将命令行给出的文件中所有'\r'替换为'\n',然后利用批处理的for语句处理指定目录下所有文件即可。
Mac2Unix.c
比如在cmd窗口里面输入以下命令,可以用c:\mydir\Mac2Unix.exe处理所有c:\tmp\目录下及其所有子目录下的*.c文件
for /f %f in ('dir /a-d /b /s c:\tmp\*.c') do c:\mydir\Mac2Unix.exe %f
Windows换行符是'\r\n'
Mac换行符是'\r'
编个小程序比如Mac2Unix.c将命令行给出的文件中所有'\r'替换为'\n',然后利用批处理的for语句处理指定目录下所有文件即可。
Mac2Unix.c
#include <stdio.h>
FILE *f;
int c1,c2;
int main(int argc,char *argv[]) {
if (argc!=2) {
printf("Usage: Mac2Unix filename\n");
return 1;
}
f=fopen(argv[1],"rb+");
if (NULL==f) {
printf("Can not open file [%s]!\n",argv[1]);
return 2;
}
while (1) {
c1=fgetc(f);
if (EOF==c1) break;
if ('\r'==c1) {
c2=fgetc(f);
if ('\n'!=c2) {
fseek(f,-2L,SEEK_CUR);
fputc('\n',f);
fseek(f,1,SEEK_CUR);
}
if (EOF==c2) break;
}
}
fclose(f);
return 0;
}
比如在cmd窗口里面输入以下命令,可以用c:\mydir\Mac2Unix.exe处理所有c:\tmp\目录下及其所有子目录下的*.c文件
for /f %f in ('dir /a-d /b /s c:\tmp\*.c') do c:\mydir\Mac2Unix.exe %f
#7
上帖中代码略改
#include <stdio.h>
FILE *f;
int c1,c2;
int main(int argc,char *argv[]) {
if (argc!=2) {
printf("Usage: Mac2Unix filename\n");
return 1;
}
f=fopen(argv[1],"rb+");
if (NULL==f) {
printf("Can not open file [%s]!\n",argv[1]);
return 2;
}
while (1) {
c1=fgetc(f);
if (EOF==c1) break;
if ('\r'==c1) {
c2=fgetc(f);
if (EOF==c2) {
fseek(f,-1L,SEEK_CUR);
fputc('\n',f);
break;
}
if ('\n'!=c2) {
fseek(f,-2L,SEEK_CUR);
fputc('\n',f);
fseek(f,1,SEEK_CUR);
}
}
}
fclose(f);
return 0;
}