参数化c ++中switch语句中的函数

时间:2015-03-10 14:21:22

标签: c++ function switch-statement

我尝试将字符串传递给函数,但无法执行此操作;

我最初尝试使str [100]变量全局但输出不正确;

我也尝试将str作为参数传递给函数,但结果不正确。

#include<iostream>
#include<cstring>
using namespace std;


char str[100];

void nwrds(char s)
{
    int i=0,len=0,cnt=0;

    for(i=0;i<len;i++)
    {
        if(str[i]==' ')
        {
            cnt++;
        }
    }

    cout<<"The number of words in the string are "<<cnt+1<<endl;
}

void hyp(char s)
{
    int i=0,len=0,cnt=0;

    for(i=0;i<len;i++)
    {
        if(str[i]==' ')
        {
            str[i]='-';
        }
    }

    cout<<"The changed string is :-  "<<str<<endl;
}


main()
{

    int i=0,len=0,cnt=0;


    cout<<"Enter the string :-  ";
    cin.getline(str,100);
    cout<<endl;

    len=strlen (str);

    cout<<"You have entered :-"<<str<<"\n\n"<<endl;

    int p;

    cout<<"Enter what do you want to do "<<endl;
    cout<<"1.Count number of words "<<endl;
    cout<<"2.Replace space by hyphen "<<endl;
    cin>>p;

    switch (p)
    {
        case 1:  nwrds(*str); break;
        case 2:  hyp(*str); break;  
        default : cout<<"Do nothing "<<endl; break;

    }

}

例如,如果我的字符串是“我很酷” 我输入1时得到的输出是 字符串中的单词数是1.所以我做错了什么!!!

1 个答案:

答案 0 :(得分:1)

您应该更改以下功能参数:

void nwrds(char* s, int len)
{
    int i=0 ....

然后调用这个函数:

nwrds(str, len);

在你的函数中使用输入变量&#34; s&#34;而不是全球&#34; str&#34;,这样你就可以把你的&#34; str&#34; main函数内部的变量,将其从全局变量中删除。拥有全局变量是个坏主意......

还有一点:您必须将字符串长度作为参数传递给函数(与字符串本身一起),因为您将字符串作为指针传递,并且没有其他方法可以了解内部的字符串长度功能。