php输出html代码_这段代码为啥不能输出c?

原问题:这段代码为啥不能输出c?
分类:编程开发 > 最后更新时间:【2017-02-25 23:03:24】
问题补充:#include <stdio.h>int main(){char a[50001];char c[50001];scanf("%s", a);printf("%s", a);int i;int t;for (i = 50000; i >= 0; i--){if (a[i] == 'R' && a[i + 1] == 'M' && a[i + 2] == 'C'){for (t = i; a[t] != '*'; t++){c[t] = a[t];}break;}}printf("%s", c);return 0;}

最佳答案

不知你程序的目的是什么

for (i = 50000; i >= 0; i--) 你的这个就有问题了

a是局部变量,它的内容是随机的,即使你用scanf赋值了,它后面的值是不会改变的(除非你输入了50000个字符)

另外:

你的c可能没有赋值,且即使赋值了,也没有结尾(字串必须是\0结尾的)

所以没有输出很正常


追问:
我先加个0试试
追问:
加0了还不行,我的目的是想搜索一个字符串的子串,既以RMC开头*结尾的一段字符串!
追问:
标准库里的函数不太熟,所以自己写了一段搜索代码,把它从a数组拿到c数组里再做进一步处理,其实这只是我为了测试写的代码对不对的测试,作业程序要比这个复杂的多! 追答:
若是这个要求,你的算法完全不对,且程序有内存溢出的BUGi = 50000,那么a[i + 1] ,a[i+2]就是下标溢出了你定义下标的最大值开始计算,即使能运行,效率也极低C的字串是以\0结尾的,且有一堆字串函数(如strstr,strlen等)完成你的运算很简单的,你不用判到50000的,只要用strlen的长度或以\0结尾就可以了
  • 追答:
    给你简单写一个参考(不用库函数,不用指针,尽管用它们要简单得多)(因为不能上传正常的程序,我全部改了大写,你用工具全转为小写就可以了)#INCLUDE <STDIO.H>#INCLUDE <STRING.H>INT MAIN(){CHAR A[50001];CHAR C[50001];INT I,LEN,T;SCANF("%S", A);PRINTF("%S", A);LEN=0;WHILE(A[LEN++]); //这个可以计算字串长,也可用STRLENT=0;FOR(I=0;I<LEN-4;I++) ////长度小于4个,不符合要求直接退出{IF (A[I] == "R" && A[I + 1] == "M" && A[I + 2] == "C") //这个可以用STRSTR完成{ FOR (T = 0; T+I< LEN && A[T+I] != "*"; T++) //注意,可能没有以"*"结尾的 { C[T]=A[I+T]; } BREAK; //只找一次 } } IF (T && A[T+I]=="*") //只有这个符合条件 { C[T]="*"; //若结果要含*的,否则删除它 C[T+1]="\0"; //必须以\0结尾. PRINTF("\N%S\N",C); } RETURN 0;}
    最佳答案由网友  whoami1978  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    9

    分享到:

    其他回答

    暂无其它回答!

      推荐