我收到C ++语法错误

时间:2013-12-14 16:41:33

标签: c++ syntax-error

这个脚本应该从键盘读取字符,将它们存储到数组中,然后输出它们:

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;
void storeArraysintoStruct(char[], int);

int main()
{
    char test[] ="";
    int a = 0;
    storeArraysintoStruct(test, a);
    system("pause");
    return 0;
}

void storeArraysintoStruct(char test[], int a)
{
    int n;
    cout << "Enter number of entries: " << endl;

    cin >> n;
    int i = 0;

    for (i=0, i<n, i++)

    {
        cout << "Enter your character: " << endl;
        cin.getline(test, n);
    }

    while (i < n)
    {
        cout << test[i] << endl;
        i++;
    }

}

编辑:修复它:

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;
void storeArraysintoStruct(char[], int);

int main()
{
    char test[40] = "";
    int a = 0; 
    storeArraysintoStruct(test, a);
    system("pause");
    return 0;
}

void storeArraysintoStruct(char test[], int a)
{
    int n;
    cout << "Enter number of entries: " << endl;

    cin >> n;
    int i;


    for (i=0; i < n; i++)

    {
        cout << "Enter your character: " << endl;
        cin >> test[i];
        if (test[n-1])
        {
        cout << endl;
        }
    }

     i =0;
    while (i < n)
    {
        cout << test[i] << endl;
        i++;
        if(test[n-1])
        {
            cout << endl;
        }
    }

}

但是,我收到错误预期:在&#34;)之前的主要表达式&#34;和&#34;;&#34;之前。任何帮助将不胜感激。

编辑:脚本没有按预期工作,因为它没有输出存储的字符。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

评论中已经指出了语法错误。另外,正如已经提到的那样,您永远不会在i循环后重置for,这会阻止您的while循环运行。

但是,您还必须记住这个

char test[] = "";

分配长度仅为1个字符的数组test。您不能将多个数据字符放入该数组中。换句话说,您的storeArraysintoStruct肯定会超出数组并进入未定义的行为区域。

如果您希望预先分配更大的缓冲区以供将来在storeArraysintoStruct中使用,则必须明确指定大小。例如

char test[1000] = "";

将使test成为1000个字符的数组。当然,无论阵列有多大,您都有责任遵守大小限制。

P.S。如果您从未在a内使用该参数,那么该参数storeArraysintoStruct的重点是什么?