注册 登录
编程论坛 C++教室

编译没错!但运行结果怎么乱七八糟的?

lockhawk 发布于 2008-10-10 12:17, 808 次点击
#include "iostream.h"
void longs(char a[],char b[]);
int main()
{
    char m[]={"TOMATO"};
    char n[]={"studio"};
    char k[]={"shu"};
    char l[]={"shanghai univesity"};
    longs(m,n);
    longs(k,l);
    return 0;
}
void longs(char a[],char b[])
{
    int sizea=sizeof(a)/sizeof(char);
    int sizeb=sizeof(b)/sizeof(char);
    if(sizea>sizeb)
    {
        for(int i=0;i<sizea;i++)
        {
            cout<<a[i];
        }
        cout<<endl;
    }
    if(sizeb>sizea)
    {
        for(int i=0;i<sizeb;i++)
        {
            cout<<b[i];
        }
        cout<<endl;
    }
    if(sizea==sizeb)
    {
        for(int i=0;i<sizea;i++)
        {
            cout<<a[i];
        }
        cout<<" ";
        for(int j=0;j<sizeb;j++)
        {
            cout<<b[i];
        }
        cout<<endl;
    }
}

我是VC6。
7 回复
#2
blueboy820062008-10-10 12:23
你在函数里加一句;
cout<<sizea<<" "<<sizeb<<endl;
看一下呗....
#3
blueboy820062008-10-10 12:36
建议用这个.......
int sizea=strlen(a);
int sizeb=strlen(b);
#4
lockhawk2008-10-10 12:47
int sizea=strlen(a);
int sizeb=strlen(b);
是不是要加什么头文件名?我这样写的时候出现没有声明的错误:error C2065: 'strlen' : undeclared identifier
#5
blueboy820062008-10-10 12:56
#include<string.h>
#6
lockhawk2008-10-10 13:11
非常谢谢blueboy。
但是运行结果还是有问题。明明tamato和studio都是6个字符,但是只输出tomato。难道if(sizea==sizeb)语句无效?
我把if(sizea==sizeb)放到前面,也就是先if(sizea==sizeb)再if(sizea>sizeb) ,输出结果还是tomato……
按道理应该是tomato和studio同时输出啊

我试过cout<<sizea<<sizeb;都是6啊
#7
lockhawk2008-10-10 13:13
不好意思 已经解决。原来我把i和j弄错了…………浪费您的时间真不好意思
#8
song42008-10-10 19:37
int sizea=sizeof(a)/sizeof(char);
sizeof(a)  ==  sizeof(int)
1