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

输入字符型数组多个,最后要求用#号结束

丽娜13 发布于 2014-07-14 14:04, 878 次点击
char s[100];
while (cin>>s……)
输入多个字符型数组,最后用#号结束程序,后面要怎么写。。。。
14 回复
#2
砖家的谎言2014-07-14 14:13
晕呀,你这么提问是没有多少人回答你的,你要能写多少写多少,在哪里除了问题,再问!基本判断会吗?输入sanf会用吗?
#3
wp2319572014-07-14 14:48
作为c++的使用者  一般来说 我们就不使用char* 来操作字符串了

程序代码:
#include<iostream>
#include<string>

using namespace std;

int main(void)
{
    string s[100];
    int i=0;
    while(1)
    {
        getline(cin,s[i]);
        if(s[i]=="#") break;
        i++;
    }
    cout<<"以下是您所输入的字符串:"<<endl;
    for(i=0;i<5;i++) cout<<s[i]<<endl;
    return 0;
}     
#4
wp2319572014-07-14 14:50
不过是否需要添加 for(i=0;i<5;i++) s[i].~string(); 来释放内存 或者说 如此释放内存方式是否正确 我也不是很了解
#5
丽娜132014-07-14 15:23
回复 2 楼 砖家的谎言
会scanf,但我一般写cin,gets一些输入。。。。
#6
丽娜132014-07-14 15:30
回复 3 楼 wp231957
so nice thank you.作为学c++不久的小菜鸟来说。。。。写起程序来真的真的像个白痴
#7
TonyDeng2014-07-15 09:15
什么叫“字符型数组”?还多个?
#8
zklhp2014-07-15 10:49
程序代码:

// g++ -Wall -march=corei7-avx -Ofast -msse4.2 -mavx -std=c++11 a.cpp -lm -o a
#include <iostream>
#include <vector>
#include <string>

using std::cout;
using std::cin;
using std::endl;
using std::vector;
using std::string;

int main(void)
{
    vector<string> vec_str;
    string tmp("");
    while (cin >> tmp && tmp != "#")
    {
        vec_str.push_back(tmp);
    }
    for (vector<string>::iterator i = vec_str.begin(); i != vec_str.end(); ++i)
    {
        cout << *i << endl;
    }
   
    return 0;
}

只有本站会员才能查看附件,请 登录


#9
zhuix77882014-07-15 16:02
int main()
{
    char s[100]={0};
    char* p=s;
    cin>>*p;
    while( *p!='#' )
    {
        p++;
        cin>>*p;
    }
    *p='\0';
    cout<<s<<endl;
}
#10
zhuix77882014-07-15 16:22
回复 3 楼 wp231957
你的程序只能检测输入为单个#时break,如果一次输入较多的话不行。
比如:
输入 abc#abc 回车仍然不能结束程序,只有输入单独#时会结束。
#11
zklhp2014-07-15 17:32
以下是引用zhuix7788在2014-7-15 16:22:33的发言:

你的程序只能检测输入为单个#时break,如果一次输入较多的话不行。
比如:
输入 abc#abc 回车仍然不能结束程序,只有输入单独#时会结束。

我感觉这种程序就是设计成单独#结束的 这样最简单 也最容易用
#12
fl89622014-07-16 06:38
#include<iostream>
#include<vector>
#include<string>
#include<iterator>
using namespace std;
int main(void)
{
   vector<char> a[2];//我这里弄了两个字符串,你要多少个自己弄就好
   vector<char>::iterator q;
   char c;
   vector<char>::size_type n=0;
   int i=0;
   while(i!=2)
   {
     cin>>c;
     a[n].push_back(c);
     if(c=='#')
       { n++;
         i++;}
   }
   for(n=0;n!=2;n++)
     for(q=a[n].begin();q!=a[n].end();q++)
       cout<<*q<<" "<<endl;
   return 0;
}
#13
wp2319572014-07-16 08:54
以下是引用zhuix7788在2014-7-15 16:22:33的发言:

你的程序只能检测输入为单个#时break,如果一次输入较多的话不行。
比如:
输入 abc#abc 回车仍然不能结束程序,只有输入单独#时会结束。



看咋要求了  #算字符不   含有#的字符串算字符串不  你这例子纯属扯淡
#14
NBABOY2014-07-17 00:41
int main()
{
int cout;
Char * ch[100];
for(int I=0;i<=100;i++)
{
printf("请输入第%d个支付穿:\n",i);
gets(ch[i]);
if(ch[i]=="#")
{break;}
Cout=i;
}
printf("一共有%d个字符串\n",cout);
for(int k=0;k<=cout;k++)
printf("%s\n",ch[k]);
}
#15
NBABOY2014-07-17 05:27
main()
{
int cout;
char * ch[10];
for(int i=1;i<10;i++)
{
printf("请输入第%d个支付穿:\n",i);
//gets(&ch[i]);
scanf("%s",&ch[i]);
printf("%s",&ch[i]);

if(!strcmp(&ch[i],"#"))
{break;}
cout=i;
}

printf("一共有%d个字符串\n",cout);
for(int k=1;k<=cout;k++)
printf("%s\n",&ch[k]);

}

这是调试后的代码
1