0

我在 C 编程中有以下问题。

我有一个字符串数组存储为单词 [10] [50]。我想从数组中提取每个字符串,然后将其传递给另一个函数。我尝试了以下方法:

 #include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"

int Check_Anagram(char*,char*);

void main()
{
    char words[10][20];
    int i;
    int flag;
    for(i=0;i<3;i++)
    {
        scanf("%s\n",words[i][20]);
    }
    for(i=1;i<10;i++)
    {
        flag = Check_Anagram(words[i][20],words[i-1][20]);      
    }
    getch();
}

int Check_Anagram(char *a,char *b)
{
    printf("%s %s\n",a,b);
    return 1;
}

这会在编译期间创建异常。现在我认为,当我使用“printf”语句时,这个命名法可以正常工作 ii words[i] 从二维单词数组中打印字符串“i”。当我尝试用检查功能做同样的事情时,就会发生错误。

soemone 可以指出我如何做到这一点吗?

PS 请忽略程序效率方面的任何错误等。我需要你的帮助,这只是一个学习字符串传递给函数的测试程序谢谢

4

4 回答 4

4

你路过words[i][20]。您需要在两个循环中都words[i]通过。尝试这个:

for(i = 1; i < 3; i++) /* i < 3 */
{
    flag = Check_Anagram(words[i], words[i-1]);
}

另一个问题是您正在读取3字符串并尝试打印10. 因此,当您传递words[3]它时,它包含垃圾:printf尝试打印不需要以 0 结尾的垃圾。

于 2012-02-20T08:38:12.297 回答
2

在第一个 for 循环中,当 i 为 0 时,您指向 words[-1],这是您的例外。

于 2012-02-20T08:35:27.493 回答
1

flag = Check_Anagram(words[i][20],words[i-1][20]);

您正在传递 Check_Anagram 每个单词的第 21 个字母。相反,您应该自己传递单词:

flag = Check_Anagram(words[i],words[i-1]);

您在使用scanf. 要从控制台读取一行到您将使用的每个单词:

for(i=0;i<10;i++)
{
    scanf("%s\n",words[i]);
}
于 2012-02-20T08:38:35.613 回答
0
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"

int Check_Anagram(char [],char []);

void main()
{
    char words[10][20];
    int i;
    int flag;
    for(i=0;i<3;i++)
    {
        scanf("%s\n",words[i]);
    }
    for(i=1;i<10;i++)
    {
        flag = Check_Anagram(words[i],words[i-1]);      
    }
    getch();
}

int Check_Anagram(char a[],char b[])
{
    printf("%s %s\n",a,b);
    return 1;
}

在所有用户的帮助下,我终于得到了纠正。我已经为那些正在努力将字符串数组中提取的字符串传递给另一个函数的人发布了更正的代码。希望能帮助到你。

于 2012-02-21T09:10:52.477 回答