C文件操作 在VC中一些有关问题,问VC编译调试机制
C文件操作 在VC中一些问题,问VC编译调试机制
想写数据到硬盘,再读出来用。下面是调试写和读的代码,问题见后面。
char str[256];
for (int i = 0; i < 256; i++) //初始写入的数组
{
str[i] = i;
}
FILE *pFile = fopen( "20070501.dat ", "ab "); //先写入
fwrite(str, 1, 256, pFile);
fclose(pFile);
pFile = fopen( "20070501.dat ", "rb "); //读
char strRead[256];
fread(strRead, 1, 256, pFile);
fclose(pFile);
pFile =fopen( "2007.dat ", "ab "); //再写,验证读的是否正确
fwrite(strRead, 1, 256, pFile);
fclose(pFile);
现象:
1。在调试的时候,128以上的数在watch窗口里面显示的是负数,补码。
如129显示-127
定义unsigned char就显示128以上的正数了。
2。在调试的时候,读入的数组strRead[],128-255数显示0-127。
而且点感叹号运行不生成.dat文件
3。关掉vc,运行debug下的.exe,两次写入的文件都是0-255的数,如我本意。
生成两个.dat文件
问题:
1。char还有符号类型么?
2。调试和运行的时候,观察变量和实际运行不一样? 那调试的时候观察数据的意义何在?
3。调试的时候为什么不生成.dat文件?
------解决方案--------------------
1 有
2 运行结果不一样的话是你的程序问题,例如你用了相对路径,而当前目录是未知的。你应该用GetModuleFileMame和PathAppend来生成一个绝对路径。
3 用绝对路径看看
想写数据到硬盘,再读出来用。下面是调试写和读的代码,问题见后面。
char str[256];
for (int i = 0; i < 256; i++) //初始写入的数组
{
str[i] = i;
}
FILE *pFile = fopen( "20070501.dat ", "ab "); //先写入
fwrite(str, 1, 256, pFile);
fclose(pFile);
pFile = fopen( "20070501.dat ", "rb "); //读
char strRead[256];
fread(strRead, 1, 256, pFile);
fclose(pFile);
pFile =fopen( "2007.dat ", "ab "); //再写,验证读的是否正确
fwrite(strRead, 1, 256, pFile);
fclose(pFile);
现象:
1。在调试的时候,128以上的数在watch窗口里面显示的是负数,补码。
如129显示-127
定义unsigned char就显示128以上的正数了。
2。在调试的时候,读入的数组strRead[],128-255数显示0-127。
而且点感叹号运行不生成.dat文件
3。关掉vc,运行debug下的.exe,两次写入的文件都是0-255的数,如我本意。
生成两个.dat文件
问题:
1。char还有符号类型么?
2。调试和运行的时候,观察变量和实际运行不一样? 那调试的时候观察数据的意义何在?
3。调试的时候为什么不生成.dat文件?
------解决方案--------------------
1 有
2 运行结果不一样的话是你的程序问题,例如你用了相对路径,而当前目录是未知的。你应该用GetModuleFileMame和PathAppend来生成一个绝对路径。
3 用绝对路径看看