我必须使用名为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。 如果有人能帮助我,我将不胜感激。
答案 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]
声明您的主要功能名为main
使用return 0
;
写printf("false\n");
以通过您的上一个测试用例。 (你知道为什么吗?)
构建gcc contains.c -o contains