【问题标题】:How should I print the value that a pointer points to?我应该如何打印指针指向的值?
【发布时间】:2013-10-17 01:39:57
【问题描述】:

我正在尝试向用户显示一系列问题,然后浏览回复。我的代码构建没有错误,但是当我运行它时出现错误:期望指向 char 的指针,但找到指向聚合的指针。这里有什么错误?

#include <stdio.h>

int main ()

{

 char name[50] , lastname[50] , add[100], post[50], town[60], state[60], tel[50];

 printf ("**** PLEASE ENTER THIS CONFIDENTIAL INFORMATION****");

  printf ("\n=================================================\n=================================================");

printf ("\n\nFirst name:");
scanf ("%s",&name);

printf ("\nLast name:");
scanf  ("%s",&lastname);

printf ("\nAddress Please:");
scanf ("%s",&add);

printf ("\nPostcode:");
scanf("%s",&post);

printf ("\ntown:");
scanf ("%s",&town);

printf("\nTelephone number:");
scanf("%s",&tel);


printf ("\n\n****CONFIDENTIAL INFORMATION****");

printf ("\n=================================================\n=================================================");

printf ("\nName:%s %s \n" ,name ,lastname);
printf ("Address:%s\n",add);
printf ("postal code:%s\n",post);
printf ("Town:%s\n",town);
printf ("State:%s\n",state);
printf ("Tel:%s\n",tel);

}

【问题讨论】:

  • 不,我很抱歉...你的问题在哪里?
  • 不要将引用传递给printf
  • 您的问题是什么?您的问题是什么?
  • 你的问题太长不是问题。问题是没有问题。
  • 是的!是的,你确实搞砸了。

标签: c


【解决方案1】:
#include <stdio.h>
int main()
{
    int i=3;
    int *j;
    j = &i;

    printf("i %d\n",i);//value of i
    printf("j %d",*j);//value of i in j
    printf("j %d",&j);// address of i in j
   return 0;
}

所以,这就是引用和取消引用指针的方式。我只是给出了线索​​。现在你用你的大脑......干杯!

【讨论】:

    【解决方案2】:

    当你对字符串进行scanf时,你不需要

    scanf("%s",&amp;str);

    而只是做

    scanf("%s",str).

    【讨论】:

      【解决方案3】:

      试试这个(并全部删除)查看我上面的评论了解原因。

      #include <stdio.h>
      
      int main ()
      
      {
      
       char name[50] , lastname[50] , add[100], post[50], town[60], state[60], tel[50];
      
       printf ("**** PLEASE ENTER THIS CONFIDENTIAL INFORMATION****");
      
        printf ("\n=================================================\n=================================================");
      
      printf ("\n\nFirst name:");
      scanf ("%s",name);
      
      printf ("\nLast name:");
      scanf  ("%s",lastname);
      
      printf ("\nAddress Please:");
      scanf ("%s",add);
      
      printf ("\nPostcode:");
      scanf("%s",post);
      
      printf ("\ntown:");
      scanf ("%s",town);
      
      printf("\nTelephone number:");
      scanf("%s",tel);
      
      
      printf ("\n\n****CONFIDENTIAL INFORMATION****");
      
      printf ("\n=================================================\n=================================================");
      
      printf ("\nName:%s %s \n" ,name ,lastname);
      printf ("Address:%s\n",add);
      printf ("postal code:%s\n",post);
      printf ("Town:%s\n",town);
      printf ("State:%s\n",state);
      printf ("Tel:%s\n",tel);
      
      }
      

      【讨论】:

      • 感谢您的回答和编辑,但是当我执行它时,例如我的地址是“357,jln batik 1/1”然后“jln”和“batik”跳到变量“post “,这让我很困惑。也许这只是我的电脑,也许是我
      • 地址字符串中的空格导致字符串被地址扫描,然后是邮政编码。 Look here 了解如何使用带有嵌入空格的 scanf。
      • 我还不太明白你提供的链接,但我会尽力做到这一点,非常感谢@ryyker
      • 它主要是指出另一种使用fgets (name, MAX_NAME_SZ, stdin);而不是scanf ("%s",name);来捕获用户输入的方法。它提供了对嵌入空间等意外事物的更多控制。在此处尝试建议的技术,如果您有问题,请在此处发布。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      相关资源
      最近更新 更多