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 用绝对路径看看