如何正确设置指向其中包含字符的数组的指针

How to properly set pointers to an array with chars in it

我希望你们中的一些人可以帮助我对分配给其中包含字符(特别是字母)的数组的指针有一个基本的了解。我的问题是,当用户应该输入字母 'D' 或 'U' 时,我的部分代码不起作用,我不知道问题出在哪里。我试图在没有指针的情况下设置它,但这使我的程序更加复杂,我也在努力最终学习该死的东西。

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int number;

   scanf("%d", &number);
   char *pz;
   char save[number];
  

   for (int i = 0; i < number; i++)
   {
       pz = &save[i];
       scanf("%s", pz+i);
   }

好像不是这个

   for (int i = 0; i < number; i++)
   {
       pz = &save[i];
       scanf("%s", pz+i);
   }

你是说

   for (int i = 0; i < number; i++)
   {
       pz = save + i;
       scanf( " %c", pz );
   }

注意格式字符串中的空格" %c".

指针pz已经指向数组中的所需位置

pz = save + i; 

所以在 scanf 的调用中使用表达式 pz+i 没有任何意义。

您必须使用转换说明符 %c.

而不是转换说明符 %s

输入字符数组后可以像这样输出

printf( "%.*s\n", number, save );

或者你可以循环输出数组,例如

   for ( pz = save; pz != save + number; ++pz )
   {
       putchar( *pz );
   }
   putchar( '\n' );