输入一个字符,再输入一个以回车结束的字符串(少于80 个字符),在字符串中查找该字符。

输入一个字符,再输入一个以回车结束的字符串(少于80 个字符),在字符串中查找该字符。如果找到,则输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出“NotFound”。
#include<stdio.h>
int main()
{
int i=0,a=1,j;
char str[80];
char m;
printf("Input a character: ");
scanf("%c",&m);
printf("Input a string: ");
while((str[i]=getchar())!='\n')
{ i++;}
str[i]='\0';
for(j=i;j>=0;j--){
if(str[j]==m)
{printf("index=%d",j);
a=0;
break;}}
if(a==1)
printf("Not Found");
return 0;
}
请问这个程序哪里不对?

要回车结束,保证你的字符串空间足够大,或者一个个字符读取直到最大上限或 回车符,如果用gets,回车符本来就是它的结束符,这个要看你的空间足够大,不然会出问题,十六进制的数,需要范围规定,~~~不然太大了,你转换10进制,~~~ 十六进制字符后,如果16进制 有0x 代数字表示,那么就判断这个,如果 纯数字,那就简单了~~~,如果有0x,就判断,0x然后后面连续数字,直到非数字,是否有0x后面无数字???
0x5,如果0x且后面是个数字,那么把这个存入新的字符串,连续的数字一起,直到非数字,这个还有要考虑就是 0x520x5 这个东西,如果有这情况,那么读到数字0需要特别判断下,~~~还有就是那个x是否 大小写通用, 0x 5 是否可以包含空格??,16进制是否有其他表示方法?
不知道是判断一个 16进制还是多个,一个简单,多个,麻烦点把,反正尽量把可能都考虑了,
呵呵, 一点见解,说错了~~请指教 呵呵
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答