1

所以我正在输入一个数组和一个数字,该数字是数组的长度到一个名为“Write”的函数,如下所示:

string write (int n, char t[100])

为了简单起见,我只想在这个函数的帮助下写出数组的值,如下所示:

{
    int i;

    for (i=1;i<=n;i++) {
        if (t[i]=='a') {
        printf("%c" , t[i]);
        }
    }

    return 0;
}

int main() 我做的唯一一件事就是使用 ascanf作为n变量,并在数组中给出从 1 到n'a' 的字符串值。我调用了 write 函数string write(n,t[100]);这是整个“main”:

    int main()  
{  
    int i,n;   
    char t[100];  
    scanf("%i" ,&n);  

    for (i=1;i<=n;i++) {
            t[i]='a';
            }
string write (n,t[100]);  
return 0;  
} 

我的问题是为什么这个简单的程序不能运行我可以输入的值n但不会打印出任何东西?我一定是在声明或调用我是 C++ 新手的函数时遗漏了一些东西。

4

2 回答 2

1

string write(n, t[100])是您的函数的原型(类型省略)。如果你想调用 write,你需要做类似的事情

int main()  
{  
    int i,n;   
    char t[100];  
    scanf("%i" ,&n);  

    for (i=1;i<=n;i++) {
            t[i]='a';
            }
write(n,t);  
return 0;  
}

传递t[100]给您的write函数会将字符串的第 100 个元素提供给您的函数,这不是您想要做的。要传递整个字符串,只需使用t.

另一个错误是你说 write 返回一个字符串。但是你return 0在你的代码中,你想将写原型修改为int write(int n, char t[100]);

于 2012-10-13T09:20:22.923 回答
1

线

string write (n,t[100]);  

inmain不调用该write函数 - 它定义了一个名为“write”的变量string类型,由n元素组成,每个元素具有相同的值t[100](这本身就是一个错误,因为这是 100 元素数组的第 101 个元素) .
要调用该函数,您应该编写

write(n, t);

你真的应该得到一本不错的 C++ 入门书。
SO上有很好的列表,你应该把它作为你找到它们的第一个练习。

于 2012-10-13T09:48:32.143 回答