第1周:指针与字符串
1、字符串比对
题目内容:
题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1。
注意,第一个字符的位置是0。
注意,第一个字符串在第二个字符串中的位置可能不止一处。
注意,字符串中可能含有空格。
注意,两个字符串的长度一定大于0。
输入格式:
两个字符串,一行一个。
输出格式:
第一个字符串在第二个字符串中出现的位置,按照从小到到的顺序排列,每个数字后面有一个空格。如果在第二个字符串中找不到第一个字符串,则输出-1。
输入样例:
abba
ababbba abbabbabbabbaacc
输出样例:
8 11 14 17
解答:
#include <stdio.h> #include <string.h> #define LEN 10000 void string_in(char * tar, char * src); int main(void) { char s1[LEN], s2[LEN]; gets(s1); gets(s2); string_in(s1, s2); return 0; } void string_in(char * tar, char * src) { int index = 0, i; while(src[index]) { if(src[index] == tar[0]) { i = 1; while(src[index + i] == tar[i] && tar[i] != '\0') i++; if(i == strlen(tar)) printf("%d ", index); } index++; } if(strstr(src, tar) == NULL) printf("%d\n", -1); }