如何正确设置指向其中包含字符的数组的指针
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' );
我希望你们中的一些人可以帮助我对分配给其中包含字符(特别是字母)的数组的指针有一个基本的了解。我的问题是,当用户应该输入字母 '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' );