匿名用户
1级
2015-11-26 回答
/*不知道你要换号就好了还是需要第一行与第二行等排列有一定不同,所以两个都弄了一下*/
/* 你复制试一下 */
char *p[] = {
"A爱玩大区可以享受到的福利是?\n会员 ",
"B B8级宝石的雕纹效果,基础属性增加了多少?\n2.5",
"C 宝石中需要输入二级密码的时候是?\n摘下宝石时 ",
"D 部落代言人小关真名叫?\n关诗敏",
"E 一切都已随云,\n往事不再重提,\n生命中的记忆留在心底,\n祝愿你快乐!" };
char *p[] = {
"A爱玩大区可以享受到的福利是?\n会员 ",
"B B8级宝石的雕纹效果,基础属性增加了多少?\n\t2.5",
"C 宝石中需要输入二级密码的时候是?\n\t\t摘下宝石时 ",
"D 部落代言人小关真名叫?\n\t\t关诗敏",
"E 一切都已随云,\n\t\t往事不再重提,\n\t\t生命中的记忆留在心底,\n\t\t祝愿你快乐!" };
追问:
第一种结果正是我所希望的,但花括号里面的文本不要合在一行可以么?实际文本长度有几十倍,所以还是按我那样每行分开打,问题来了,“”符号左边和右边不在同一行会报错!
另外可以通过搜索首个字,打印出该行及下一行么?比如我搜索“E”,打印出:
E 一切都已随云,
往事不再重提,
搜索“生”或“生命”打印出:
生命中的记忆留在心底,
祝愿你快乐!"
追答:
/*刚刚有事去了。。好吧。现在这个代码没办法粘贴,因为它会自动对齐,你需要注意一下格式就好了。把“\”之后的下一行到最开始自动对齐的tab给删除掉,使其顶格。不然会影响格式。*/
/*“\”用法是你想要对C语言的源代码进行换行的时候,在要换行的字符的后边加上,之后一个回车,下一行的要写的代码必须顶格。
如:
printf("Hello \
World!"); //会输出Hello World!
而
printf("Hello \
World!"); //会输出Hello World!
*/
/*这个赋值粘贴时注意,照图片中对齐格式,特别是顶格*/
char *p[] = {
"A爱玩大区可以享受到的福利是?\n\
会员 ",
"B B8级宝石的雕纹效果,基础属性增加了多少?\n\
2.5",
"C 宝石中需要输入二级密码的时候是?\n\
摘下宝石时 ",
"D 部落代言人小关真名叫?\n\
关诗敏",
"E 一切都已随云,\n\
往事不再重提,\n\
生命中的记忆留在心底,\n\
祝愿你快乐!" };
/*应该像图片中一模一样。*/
追问:
大哥这正是我需要的方法,下面这个问题可以帮我解答吗?小弟给你加分哦~
还用上面那段文字,可以通过搜索首个字,打印出该行及下一行么?
比如我搜索“E”,打印出:
E 一切都已随云,
往事不再重提,
搜索“生”或“生命”打印出:
生命中的记忆留在心底,
祝愿你快乐!"
追答:
OK。。只会匹配第一个搜到的。。
直接调用了一个库函数。如果字符串太长的话可以使用kmp匹配算法。。具体可以自己搜索。
#include #includeint search_str(char** src,int array_num,char*dest);
int main(void)
{
char str[30];//随意定的大小,如果搜索字符串比较长,那使用动态数组。
int i;
char *p[] = {
"A爱玩大区可以享受到的福利是?\n\
会员 ",
"B B8级宝石的雕纹效果,基础属性增加了多少?\n\
2.5",
"C 宝石中需要输入二级密码的时候是?\n\
摘下宝石时 ",
"D 部落代言人小关真名叫?\n\
关诗敏",
"E 一切都已随云,\n\
往事不再重提,\n\
生命中的记忆留在心底,\n\
祝愿你快乐!" };
search_str(p, sizeof(p) / 4, "不再");
return 0;
}
int search_str(char** src, int array_num, char*dest){
int number = array_num;
char* prt = NULL;
int cnt = 0;
int idex = 0;
for (int i = 0; i
追问:
好多报错呀,另外可以帮我多注释几行么?前面\n\讲得非常清晰,我这么笨的人都轻松理解了
追答:
//应该编译器的问题,不支持C99。。。好了修复了一下然后改了一点。
#include #includeint search_str(char** src,int array_num,char*dest);
int main(void)
{
char str[30];//随意定的大小,如果搜索字符串比较长,那使用动态数组。
*p[]//自己加,长度超了
printf("请输入匹配字符:\n");
scanf("%s", str);
/*p是搜索源,sizeof(p)/4计算p中有多少个字符串指针,str输入的搜索字符*/
search_str(p, sizeof(p) / 4, str);
return 0;
}
int search_str(char** src, int array_num, char*dest){
int number = array_num;
char* prt = NULL;//指向要打印的字符串
int cnt = 0;//记录打印了的行数
int idex = 0;//打印字符串的下标
int i;
//char* strstr(char* src,char* dest);搜索src中匹配到的第一个dest,并返回其地址。没搜到返回NULL
for (i = 0; i