如何正确编写参数函数?

时间:2017-06-11 22:17:10

标签: c arrays string parameters arguments

我必须使用名为contains.c的C程序,该程序将两个文本字符串作为参数并打印" true"如果第二个字符串完全包含在第一个字符串中,则后跟换行符,或者" false"然后是换行符。

例如(在命令提示符下)

$ ./contains 'I have a really bad feeling about this' 'bad feeling'
true

$ ./contains 'To be or not to be' 'That is the question'
false 

$ ./contains 'I am the walrus' 'I am the walrus'
true

$ ./contains 'the walrus' 'I am the walrus'
false

$ ./contains 'kmjnhbvc45&^$bn' '.'
false

到目前为止,这是我的代码。

#include <stdio.h>
#include <string.h>

int main( int argc, char* argv[]) 
{
int i;
int j;
int lenst1;
int lenst2;
int pos1;
int pos2;

if (lenst2>lenst1)
{
    printf("false");
    return 0;
}
for (j=0; j<lenst1;j++)
{
for (i=0; i<lenst2; i++)
{
    if (st2[i]==st1[j]) //NOT SURE HOW TO DEFINE "st2" and "st1"
    {
        pos1=j;
        pos2=i;
        while (pos2<lenst2)
        {
            pos2++;
            pos1++;
            if (st2[i]==st1[j])
            {

            }
            else
            {
                printf("false\n");
                return 0;
            }
            printf("true\n");
            return 0;
        }
    }
}
}
}

我不完全确定我的代码中有多少漏洞,但Xcode声称需要定义st2和st1。 如果有人能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

你忘了阅读你的论点。

char* st1 = argv[1];
char* st2 = argv[2];
lenst1 = strlen(st1);
lenst2 = strlen(st2);

答案 1 :(得分:1)

你已经完成了大部分工作,但这里有一些你错过的东西:

测试参数的数量:

if (argc != 3) {
    printf("wrong number of arguments provided\n");
    return -1;
}

捕获您所需的变量:

int i, j, pos1, pos2;
char* st1 = argv[1];
char* st2 = argv[2];
int lenst1 = strlen(argv[1]);
int lenst2 = strlen(argv[2]);

if st2[i] != st1[j]

替换你的if-else块

声明您的主要功能名为main

使用return 0;

结束您的功能

printf("false\n");以通过您的上一个测试用例。 (你知道为什么吗?)

构建gcc contains.c -o contains