передача строк в функции C - PullRequest
0 голосов
/ 20 февраля 2012

У меня следующие проблемы в программировании на Си.

У меня есть массив строк, хранящихся в виде слов [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", тогда эта номенклатура работает нормально.Когда я пытаюсь сделать то же самое с функцией проверки, возникает ошибка.

Может ли кто-нибудь указать мне, как сделать эту передачу?

PS Пожалуйста, игнорируйте любые ошибки в эффективности программы и аналогично.Мне нужна ваша помощь, и это всего лишь тестовая программа для изучения передачи строки в функцию. Спасибо

Ответы [ 4 ]

4 голосов
/ 20 февраля 2012

Вы проходите 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.

2 голосов
/ 20 февраля 2012

В первом цикле for, когда i равен 0, вы указываете на слова [-1], это ваше исключение.

1 голос
/ 20 февраля 2012

flag = Check_Anagram (слова [i] [20], слова [i-1] [20]);

Вы передаете 21-ю букву каждого слова Check_Anagram. Вместо этого вы должны передать сами слова:

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

У вас есть похожая проблема, когда вы используете scanf. Чтобы прочитать строку из консоли для каждого слова, которое вы используете:

* * 1010
0 голосов
/ 21 февраля 2012
#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;
}

Я наконец исправил это благодаря помощи всех пользователей.Я разместил исправленный код для людей, которые борются с передачей строки, извлеченной из массива строк, в другую функцию.Надеюсь, поможет.

...