此代码每次都要求输入名称,方向和数字,并将其保存在数组中。它会问你是否要继续。 0用于输入另一个联系人,1用于打印列表。当我输入的字符串没有空格时,我尝试将每个项目在其标题下对齐,但是当我使用空格时,字符串不对齐。问题是什么?我弄清楚了。提前谢谢。
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
void desplegar(int, char[][20], char[][20],char[][20]);
int main()
{
char nombres[20][20];
char direcciones[20][20];
char numeros[20][20];
int opcion = 0;
int contactos = 0;
system("hostname");
do {
printf("\nIngrese el nombre del contacto: ");
gets(nombres[contactos]);
printf("\nIngrese la direccion del contacto: ");
gets(direcciones[contactos]);
printf("\nIngrese el numero del contacto: ");
gets(numeros[contactos]);
contactos++;
printf("\nDesea ingresar otro contacto? (0/1): ");
scanf("%d",&opcion);
getchar();
}while(opcion != 1 && contactos < 20);
desplegar(contactos,nombres,direcciones,numeros);
printf("\n");
system("pause");
return 0;
}
void desplegar(int cantidad,char nombres[][20],char direcciones[][20],char numeros[][20]){
printf("Nombres\t\tDirecciones\t\tTelefono\n");
for (int i = 0; i < cantidad; i++){
printf("%s\t\t%s\t\t%s\n",nombres[i],direcciones[i],numeros[i]);
}
}
答案 0 :(得分:0)
阅读printf
格式说明符,不要使用标签。标签是邪恶的,因为它们可以从零扩展到8(至少)空格并破坏您的列格式。
示例,如果第1列的宽度为20个字母,则对文本使用“%20s”,对数字使用“%20d”。您将不得不查看如何使用左对齐与说明符。
注意:此方法仅对固定宽度字体有效。使用可变宽度字体(例如字符宽度,字符间距等)时,还有更多工作要做。