1

用于处理动态内存中的数组的程序。需要C的等价物。有人可以帮忙吗?

const int n = 6;
char **words = (char**) malloc(n *sizeof(char*));
for(int i = 0 ; i < n; i++)
    words[i] = (char*)malloc( 50 * sizeof(int));

for(int i = 0; i < n; i++) 
{
    cin>>words[i];
}

cout<<endl;
for(int i = 0; i < n; i++) 
{
    if(words[i][0] == 'q')
        cout<<words[i]<<endl;
}
4

4 回答 4

6

唯一的 C++ 部分是cinand cout; 您可以轻松更改它们:

cin>>words[i];

变成

scanf("%s", words[i]);

或者

gets(words[i]);

尽管

cout<<words[i]<<endl;

变成

puts(words[i]);

顺便说一句,在//cin你有一个潜在的缓冲区溢出,因为你正在为 6 个字符分配空间,但你正在接受任何长度的输入。你应该这样做:scanfgets

scanf("%6s", words[i]);

或(更易于维护,因为它n直接使用)

fgets(words[i], n, stdin);

(尽管这将包括\n字符串中的尾随)

于 2012-11-16T00:26:41.800 回答
2

您使用的唯一 C++ 功能是 cin 和 cout。替换cin>>words[i]gets(words[i])和。cout<<words[i]<<endl_puts(words[i])

于 2012-11-16T00:25:38.933 回答
1

用于scanf("%s", &words[i])从标准输入输入数据并printf("%s\n", words[i])输出到标准输出。

于 2012-11-16T00:25:40.173 回答
0

如你所愿:

    const int n = 6;
    char **words = (char**) malloc(n *sizeof(char*));

    int i = 0;

    for( i= 0 ; i < n; i++)
    {
        words[i] = (char*)malloc( 50 * sizeof(char));
    }

    for(i = 0; i < n; i++) 
    {
        scanf("%s", words[i]); 
    }

    printf("\n");

    for(i = 0; i < n; i++) 
    {
        if(words[i][0] == 'q')
            printf("%s\n", words[i]);

    }
于 2012-11-16T00:46:15.353 回答