C语言在线答疑
1个回答
关注
展开全部
解释一下上述代码的思路:定义两个字符串str1和str2,并定义一个整数pos来存储str2在str1中的初始位置。使用fgets()函数分别读入两个字符串str1和str2,因为fgets()函数可以一次读入一整行,而且可以指定读入的最大字符数,避免溢出。使用strcspn()函数去掉str1和str2末尾的换行符。使用strstr()函数在str1中查找str2的初始位置,如果返回值为NULL,则说明str2在str1中不存在,输出-1;否则,计算str2在str1中的偏移量,即pos,并输出。
咨询记录 · 回答于2023-03-31
C语言在线答疑
问题复制给我
【问题描述】有两个字符串str1和str2,它们的长度都不超过100个字符。请编程实现在str1中查找str2的初始位置。【输入形式】有两行输入,第一行输入字串str1,第二行输入字串str2【输出形式】一个整数。若该整数为正整数,则表示str2在str1中的初始位置。若该整数为-1,则表示str2中在str1不存在,或者str2的长度大于str1的长度【样例输入】Hello World!【样例输出】5
什么语言编写
c语言
以下是C语言的实现方法:#include #include int main() { char str1[101], str2[101]; int pos; // 读入两个字符串 fgets(str1, sizeof(str1), stdin); fgets(str2, sizeof(str2), stdin); // 去掉换行符 str1[strcspn(str1, "\n")] = 0; str2[strcspn(str2, "\n")] = 0; // 查找str2在str1中的初始位置 char* p = strstr(str1, str2); if (p == NULL) { printf("-1\n"); } else { pos = p - str1; printf("%d\n", pos); } return 0;}
解释一下上述代码的思路:定义两个字符串str1和str2,并定义一个整数pos来存储str2在str1中的初始位置。使用fgets()函数分别读入两个字符串str1和str2,因为fgets()函数可以一次读入一整行,而且可以指定读入的最大字符数,避免溢出。使用strcspn()函数去掉str1和str2末尾的换行符。使用strstr()函数在str1中查找str2的初始位置,如果返回值为NULL,则说明str2在str1中不存在,输出-1;否则,计算str2在str1中的偏移量,即pos,并输出。
【问题描述】给一个整型数组中的数按从大到小连续编号,要求相同数字编号相同,编号从1开始,输出编号结果时按照原数组元素的顺序输出。【输入形式】从控制台输入数据,第一行输入数组元素个数(个数大于等于1,并且小于等于20),第二行输入整型数组元素,各个整数之间以空格分隔。【输出形式】在屏幕上输出编号结果,各个编号之间用一个空格分隔。【样例输入】7-3 75 51 90 1118 51 -3【样例输出】5 3 4 2 1 4 5
亲本轮对话只回答一个问题
如需继续回答请购买相应的套餐
是不限次 提问的那个吗
我是按题收费的
您有几个问题?
我会给你推荐相应的套餐
本来这种大题代码会比较长都是人工编写的
请您理解
我有五个问题,有套餐吗,推我一下
正常我收一个这个大题是10元 您有5个直接给您优惠点吧