当前位置: 代码迷 >> C语言 >> 指针求教
  详细解决方案

指针求教

热度:161   发布时间:2007-12-06 11:20:20.0
指针求教
以下是我编的一个输入一个字符串和一个字符  输出该字符在字符串中的地址的指针型程序  可是怎么都执行不出来 编译没问题  还请大大指教
#include<stdio.h>
main()
{
   char ch,*p,b[10];
   printf("input\n");
    scanf("%s",b);
    printf("the word\n");
    scanf("%c",&ch);
    p=b;
    if(*p==ch)
      printf("%c\n",p);
      else p++;
}
搜索更多相关的解决方案: 指针  

----------------解决方案--------------------------------------------------------
if(*p==ch)
      printf("%c\n",p);
      else p++;

你以为这是什么```循环```??就算太阳变成水球都是错误的循环````
而且没有处理好键盘缓冲```你的程序连输入待查找字符的机会都不给你``
----------------解决方案--------------------------------------------------------
我修改了一下下````


#include<stdio.h>

int main ( void )
{
   char ch, b[10];  // 存放待查找字符和字符串
   char* p ;        // 便历整个字符串
   
   printf("input\n"); // 输入字符串
   scanf("%s",b);
  
   { int c; while( ( c=getchar() )!='\n'  &&   c!=EOF  ); }  // 清空缓冲
   
   printf("the word\n"); //输入待查找字符
   scanf("%c",&ch);

   { int c; while( ( c=getchar() )!='\n'  &&   c!=EOF  ); }  // 清空缓冲

   p=b;            
   
   while(*p)     
   {
     if(*p==ch)
     printf( "%d\n", p - b + 1 );   //输出位置
     ++p;
   }
   
   if ( ! *p )
   {  
      printf("Not found!");   // 没有找到的情况
      return 1 ;
   }
  
   return 0 ;   
}

[[italic] 本帖最后由 死了都要C 于 2007-12-6 13:32 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main()
{
     char ch,*p,b[10];     
     printf("input:");
     scanf("%s",&b);
     fflush(stdin);
     printf("the char:");
     scanf("%c",&ch);
     fflush(stdin);     
     p=b;
     while(*p != '\0')
     {
          if(*p==ch)
               printf("The address of '%c' is %d\n",*p,p);
          p++;
     }
     return 0;
}

[[italic] 本帖最后由 josen0205 于 2007-12-6 13:27 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
LS`````你确信你的代码没问题吗`````
真的???
----------------解决方案--------------------------------------------------------
我在我的电脑试了,没有问题,当找不到输入的字符的时候,就什么都不输出。
----------------解决方案--------------------------------------------------------
我试过,3L的不行,4L的行啊
fflush(stdin);
这个是什么啊??用来清空缓冲的啊??
----------------解决方案--------------------------------------------------------
用用这个程序
#include "stdio.h"

void main()
{
   char ch,*p,b[10];
   printf("input\n");        
   
   gets(b);
   printf("the word\n");
   scanf("%c",&ch);
   p=b;
   for(;*p!='\0';)
     if(*p==ch)
       {printf("%p\n",p);
        break;}
     else
         p++;
   
}
----------------解决方案--------------------------------------------------------
楼上的运行后是FFCE;what   is  the  meaning ?thank  you !!!
----------------解决方案--------------------------------------------------------
二楼说的不错,这不是个循环,而且,好像应该这样吧最后一个printf应该是
printf("%c",*p);
----------------解决方案--------------------------------------------------------
  相关解决方案