| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 354 人关注过本帖
标题:谁能告诉我这条程序有什么问题啊?
只看楼主 加入收藏
黄锋
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-1-21
结帖率:0
收藏
已结贴  问题点数:10 回复次数:7 
谁能告诉我这条程序有什么问题啊?
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
void WriteFile(char* str)
{
    ofstream out1;
    out1.open("out.txt",ios_base::binary|ios_base::app);
    for(int i=0;str[i]!=0;i++)
    out1.put(str[i]);
    out1.close();
}
void fun(char* str)
{
    for(int i=0;str!=0;i++)
        if(str[i]>='a'&&str[i]<='z')
            str[i]=str[i]+32;
        if(str[i]>='A'&&str[i]<='Z')
            str[i]=str[i]-32;
        cout<<str[i]<<endl;
   WriteFile(str);
}
void ClearFile()
{
    ofstream out1;
    out1.open("out.txt");
out1.close();
}
int main()
{
    ClearFile();
    char str[1024];
    cout<<"please input a string: "<<endl;
    cin.getline(str,1024);
    fun(str);
    return 0;
}

[ 本帖最后由 黄锋 于 2013-3-7 10:59 编辑 ]
搜索更多相关主题的帖子: void namespace include 
2013-03-06 23:12
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:3 
char str[1024];
WriteFile(&str);
void WriteFile(char* str)
函数调用方式不对,str是char *类型,&str就是 char**了,所以
WriteFile(str);

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-03-07 07:07
黄锋
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-1-21
收藏
得分:0 
运行时会出现一个出现一个应用程序错误提示,不知什么问题?

[ 本帖最后由 黄锋 于 2013-3-7 11:19 编辑 ]
2013-03-07 11:04
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:3 
你是不是想把大小写字母转换,然后进行输出啊!你的循环有问题。void fun(char* str)
{
     int len=strlen(str);
     for(int i=0;i<len;i++)
     {
        if(str[i]>='a'&&str[i]<='z')
             str[i]=str[i]-32;                //小写字母变成大写
         else if(str[i]>='A'&&str[i]<='Z')
             str[i]=str[i]+32;                 //大写字母变成小写
         cout<<str[i]<<endl;
         WriteFile(str);
      }                                //for循环内应该有括号进行控制
 }

Maybe
2013-03-07 12:17
黄锋
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-1-21
收藏
得分:0 
噢!!!
2013-03-08 16:12
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:3 
void fun(char* str)
{
     for(int i=0;str!=0;i++)
         if(str[i]>='a'&&str[i]<='z')
             str[i]=str[i]+32;

         if(str[i]>='A'&&str[i]<='Z')
             str[i]=str[i]-32;

         cout<<str[i]<<endl;
    WriteFile(str);
 }

1 红色中。str!=0 你是否是想写str[i]!=0?。这样会访问非法内存了,bug
2 两个颜色的代码不再同一个循环内的。不知道作者是否有意

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-03-08 16:46
黄锋
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-1-21
收藏
得分:0 
1、str[i]!=0,与str[i]!='\0'有区别吗?换成结束符可不可以?
<LEN和不写有什么区别啊?
2、是不是加上一个大括号就可以了?
2013-03-08 17:25
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:3 
str[i]!=0 应该是指str的第i格值是否为0,0应该是整型,str[i]是char
str[i]!='\0' 应该是指str的第i格之后的值是否全为0,中止符号

str!=0:
str 和 0 型态不同应该不能这样比吧

for 和 if 可以不写大括号,但是作用区域只限定下一行
作用区域超过一行就要写大括号了

不要投我
2013-03-08 18:27
快速回复:谁能告诉我这条程序有什么问题啊?
数据加载中...
 
   



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

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