这是一段书上抄下来的代码:
#include <windows.h>
#include <stdio.h>#define BUF_SIZE 256int main(int argc, LPTSTR argv[]){
HANDLE hIn, hOut;
DWORD nIn, nOut;
CHAR Buffer[BUF_SIZE]; if(argc != 3){
printf("usage: cp file1 file2\n");
return 1;
} hIn = CreateFile(argv[1], GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hIn == INVALID_HANDLE_VALUE){
printf("Cannot open input file. Error: %x\n", GetLastError());
return 2;
} hOut = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hOut == INVALID_HANDLE_VALUE){
printf("Cannot open output file. Error: %x\n", GetLastError());
return 3;
} while(ReadFile(hIn, Buffer, BUF_SIZE, &nIn, NULL) && nIn > 0){
WriteFile(hOut, Buffer, nIn, &nOut, NULL);
if(nIn != nOut){
printf("Fatal write error: %x\n", GetLastError());
return 4;
}
} CloseHandle(hIn);
CloseHandle(hOut);
return 0;
}在vs2005,xp sp2下正常编译,但是执行的时候我打:cp abc cba却提示abc文件找不到,可文件确实存在啊。如果我把argv[1]替换成L"abc",那拷贝出来的结果是目标文件变成了乱码,所以我想应该是编码的问题吧。请问我应该怎么才能让这个程序正确运行呢?谢谢
#include <windows.h>
#include <stdio.h>#define BUF_SIZE 256int main(int argc, LPTSTR argv[]){
HANDLE hIn, hOut;
DWORD nIn, nOut;
CHAR Buffer[BUF_SIZE]; if(argc != 3){
printf("usage: cp file1 file2\n");
return 1;
} hIn = CreateFile(argv[1], GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hIn == INVALID_HANDLE_VALUE){
printf("Cannot open input file. Error: %x\n", GetLastError());
return 2;
} hOut = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hOut == INVALID_HANDLE_VALUE){
printf("Cannot open output file. Error: %x\n", GetLastError());
return 3;
} while(ReadFile(hIn, Buffer, BUF_SIZE, &nIn, NULL) && nIn > 0){
WriteFile(hOut, Buffer, nIn, &nOut, NULL);
if(nIn != nOut){
printf("Fatal write error: %x\n", GetLastError());
return 4;
}
} CloseHandle(hIn);
CloseHandle(hOut);
return 0;
}在vs2005,xp sp2下正常编译,但是执行的时候我打:cp abc cba却提示abc文件找不到,可文件确实存在啊。如果我把argv[1]替换成L"abc",那拷贝出来的结果是目标文件变成了乱码,所以我想应该是编码的问题吧。请问我应该怎么才能让这个程序正确运行呢?谢谢
解决方案 »
- 我想做一个网络认证方面得东西,请朋友们提供思路(90)
- 关于串口编程基础请教
- 问个关于查询USB信息的问题,简单,但是我是初学者,只能再次问问
- 请问一下调试的时候出现 user breakpoint called from code at 0x7x921230 警告是什么原因?怎么解决?
- 我想在键盘上按几个键就可以对对话框按钮位置进行调整
- 关于ADO编程的一点问题
- 如何设置控件的确切尺寸
- 在插件中(DLL)如何得到主调用程序(单文档)的文档和视图类指针并能控制主调程序的文档和视图。
- 文件查找问题
- 请问如何实现制作类似“花生壳”界面?
- 编的UI用到了COMCTL32.DLL 6里的功能,如何在2000继续使用COMCTL32.DLL 6?
- windows 不能建立任何SOCKET,请高手指教,十万火急!!!!!!!!!!!!!
cannot open input file. error:2我就是跑不起来啊,郁闷~~~
Cannot open input file. Error: 3D:\workplace\sys\cp\debug>cp abc cba
Cannot open input file. Error: 3还是不行啊,哪位大侠来解释解释吧
用cl cp.c来编译链结,看看
Configuration Properties(配置属性)-〉General(列表第一个)-〉Character Set(字符集)
改成Multi-Byte
果然可以了,多谢多谢。多嘴再问一句,为什么unicode就不行呢