我尝试将字符串传递给函数,但无法执行此操作;
我最初尝试使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.所以我做错了什么!!!
答案 0 :(得分:1)
您应该更改以下功能参数:
void nwrds(char* s, int len)
{
int i=0 ....
然后调用这个函数:
nwrds(str, len);
在你的函数中使用输入变量&#34; s&#34;而不是全球&#34; str&#34;,这样你就可以把你的&#34; str&#34; main函数内部的变量,将其从全局变量中删除。拥有全局变量是个坏主意......
还有一点:您必须将字符串长度作为参数传递给函数(与字符串本身一起),因为您将字符串作为指针传递,并且没有其他方法可以了解内部的字符串长度功能。