| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3185 人关注过本帖
标题:C++编译成功,却不不显示正确的结果,帮忙看看错在哪了。谢谢大家!
只看楼主 加入收藏
天使梦魔
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:0 
复制的什么东西
main入口体,你要用那些函数吗?使用的话强制返回void干什么,你加上这个等于函数返回类型转换了。
去掉就行了
2015-08-19 19:20
农民工
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:109
专家分:639
注 册:2015-8-22
收藏
得分:0 
字符集的问题
wchar_t是宽字符集
但你的字符操作函数 全是用的单字符函数集
因此可将所有wchar_t改成char
2015-08-22 14:27
coffeesoft
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-9-26
收藏
得分:0 
宽字符的话就用宽字符的函数
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>

void Copyself()
{
  wchar_t szSelfName[MAX_PATH] = {0};
  wchar_t szWindowsPath[MAX_PATH] = {0};
  wchar_t szSystemPath[MAX_PATH] = {0};
  wchar_t szTemPath[MAX_PATH] = {0};
 
  GetModuleFileName(NULL, szSelfName, MAX_PATH);
  GetWindowsDirectory(szWindowsPath, MAX_PATH);
  GetSystemDirectory(szSystemPath, MAX_PATH);
 
  wcscat(szWindowsPath, L"\\test.txt");
  wcscat(szSystemPath, L"\\test.txt");
 
  CopyFile(szSelfName, szWindowsPath, FALSE);
  CopyFile(szSelfName, szSystemPath, FALSE);
 
}

void GetSysInfo()
{
  wchar_t szComputerName[MAXBYTE] = {0};
  wchar_t szUserName[MAXBYTE] = {0};
  unsigned long nSize = MAXBYTE;
  OSVERSIONINFO OsVER;
 
  OsVER.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  GetVersionEx(&OsVER);
  if( OsVER.dwOSVersionInfoSize == VER_PLATFORM_WIN32_NT)
  {
    if(OsVER.dwMajorVersion == 5 && OsVER.dwMajorVersion == 1)
    {
      printf("Windows xp %s \r\n", OsVER.szCSDVersion);
    }
    else if(OsVER.dwMajorVersion == 5 && OsVER.dwMajorVersion == 0)
    {
      printf("Windows 2k \r\n");
    }
  }
  else
  {
    printf("Other system\r\n");
  }
 
  GetComputerName(szComputerName, &nSize);
  wprintf(L"Computer Name is %s \r\n", szComputerName);
  nSize = MAXBYTE;
  GetUserName(szUserName, &nSize);
  wprintf(L"User Name is %s \r\n", szUserName);
 
}

int main()
{
  Copyself();
  GetSysInfo();
 
  system("pause");
 
  return 0;
}
2015-08-23 19:14
农民工
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:109
专家分:639
注 册:2015-8-22
收藏
得分:0 
getfilemodulename等函数 也得看工程设置里使用的什么字符集
2015-08-24 08:49
gsl222
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-8-31
收藏
得分:0 
以下是引用coffeesoft在2015-8-23 19:14:35的发言:

宽字符的话就用宽字符的函数
#include
#include
#include

void Copyself()
{
  wchar_t szSelfName[MAX_PATH] = {0};
  wchar_t szWindowsPath[MAX_PATH] = {0};
  wchar_t szSystemPath[MAX_PATH] = {0};
  wchar_t szTemPath[MAX_PATH] = {0};
 
  GetModuleFileName(NULL, szSelfName, MAX_PATH);
  GetWindowsDirectory(szWindowsPath, MAX_PATH);
  GetSystemDirectory(szSystemPath, MAX_PATH);
 
  wcscat(szWindowsPath, L"\\test.txt");
  wcscat(szSystemPath, L"\\test.txt");
 
  CopyFile(szSelfName, szWindowsPath, FALSE);
  CopyFile(szSelfName, szSystemPath, FALSE);
 
}

void GetSysInfo()
{
  wchar_t szComputerName[MAXBYTE] = {0};
  wchar_t szUserName[MAXBYTE] = {0};
  unsigned long nSize = MAXBYTE;
  OSVERSIONINFO OsVER;
 
  OsVER.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
  GetVersionEx(&OsVER);
  if( OsVER.dwOSVersionInfoSize == VER_PLATFORM_WIN32_NT)
  {
    if(OsVER.dwMajorVersion == 5 && OsVER.dwMajorVersion == 1)
    {
      printf("Windows xp %s \r\n", OsVER.szCSDVersion);
    }
    else if(OsVER.dwMajorVersion == 5 && OsVER.dwMajorVersion == 0)
    {
      printf("Windows 2k \r\n");
    }
  }
  else
  {
    printf("Other system\r\n");
  }
 
  GetComputerName(szComputerName, &nSize);
  wprintf(L"Computer Name is %s \r\n", szComputerName);
  nSize = MAXBYTE;
  GetUserName(szUserName, &nSize);
  wprintf(L"User Name is %s \r\n", szUserName);
 
}

int main()
{
  Copyself();
  GetSysInfo();

 
  system("pause");
 
  return 0;
}
用楼主的代码调试了,也遇到同样的问题,后来找到了原因,输出了结果,是楼主把函数调用搞成声明引进的
2015-08-31 14:30
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
"   void Copyself();
    void GetSysInfo();
"

吧前面的void 去掉

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2015-09-01 12:07
fuyong0227
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2015-8-21
收藏
得分:0 
把main函数中的两个函数前的void删掉就会调用这两个函数,否则就只是个函数声明,不会被调用的。
2015-09-05 23:19
linan03
Rank: 4
等 级:业余侠客
威 望:5
帖 子:76
专家分:204
注 册:2012-10-27
收藏
得分:0 
宽字节的字符串:   
 wchar_t szWindowsPath[MAX_PATH] = {0};
 wchar_t szSystemPath[MAX_PATH] = {0};
使用多字节的拼接函数:
 strcat((char*)szWindowsPath, "\\test.txt");
 strcat((char*)szSystemPath, "\\test.txt");

这样组成的字符串肯定是有问题的吧
2015-09-25 17:25
快速回复:C++编译成功,却不不显示正确的结果,帮忙看看错在哪了。谢谢大家!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028860 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved