【发布时间】:2018-08-29 17:45:55
【问题描述】:
据我所知,在 c 中使用 printf() 时,我们不使用 &.Right?但是在我的程序中,如果我不在显示功能中使用它,它会给我一个错误。有人可以解释一下吗?谢谢你
#include<stdio.h>
#define max 100
void enqueue();
char dequeue(void);
int front=-1,rear=-1,option;
char name[max][max],val;
void display(void);
void enqueue() {
printf("Enter the name of the paitent : ");
if(rear==max-1)
printf("Line is full");
else if (front==-1 && rear==-1)
front=rear=0;
else
rear++;
scanf("%s",&name[rear][rear]);
}
char dequeue(void) {
char val;
if(front==-1 || front >rear )
printf("Line is empty");
else
{
val=name[front];
front++;
if(front>rear)
front=rear=-1;
return val;
}
}
void display(void) {
int i;
if(front==-1|| front >rear)
printf("The queue is empty");
else
{
for(i=front; i<=rear; i++) {
printf("%s\t",&name[i][i]);
}
}
}
int main () {
printf("\n\n*******Medical Cneter********");
printf("\n\t1. Insert a paitent");
printf("\n\t2. Remove a paitent");
printf("\n\t3. Check Paitent list");
printf("\n\t4. Display");
printf("\n\t5. Exit");
do {
printf("\nEnter your option: ");
scanf("%d",&option);
switch(option)
{
case 1:
enqueue();
break;
case 2:
dequeue();
break;
// case 3:
case 4:
display();
break;
}
} while(option !=5);
}
如果我不使用 & 程序会崩溃。据我所知,在 c 中使用 printf() 时我们不使用。但是在我的程序中,如果我不在显示功能中使用它,它会给我一个错误。有人可以解释一下吗?谢谢你
【问题讨论】:
-
你不需要了解场合,只需要了解这个运算符的含义。对场合的了解将作为奖励。
-
真正使用
printf和scanf你只需要知道格式说明符想要什么数据类型。文档中对此进行了解释。scanf需要&但printf不需要,这不是一个简单的规则。除此之外,更一般地说,无论printf和scanf,您都需要了解何时以及如何使用指针,尤其是涉及数组时。 -
您的代码也无法针对其他一些问题进行编译。首先,消除这些错误并再次粘贴您的代码,其中仅包含您所指出的一个问题。
-
如果您将
printf("%s\t",&name[i][i]);更改为printf("%c\t",name[i][i]);会怎样。二维数组name的每个元素都是一个字符。所以,使用%s说明符是错误的。