C语言怎么实现将输入的字符居中显示?

如题所述

给你一个函数,随意控制输入输出的位置,可以先打印下一行,再在上一行输入。

void setxy(int x, int y)  //设置输入,输出的位置,也就是当前光标位置
{
   COORD coord = {x, y};
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

void getxy(int* x, int* y) //获取当前光标位置,调用:getxy(&x,&y);

{                          
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD coordScreen = {0, 0};
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    if (GetConsoleScreenBufferInfo(hConsole, &csbi))
    {
        *x=csbi.dwCursorPosition.X;
        *y=csbi.dwCursorPosition.Y;
    }
}
//要加头文件 #include "windows.h"

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-09

#include<stdio.h>

#include<string.h>

int main() 

{

char s[80];

int a;

gets(s);

a=strlen(s);

printf("%*c%s\n",(80-a)/2,' ',s);

getch();

}

追问

输入的时候居中,不是输出时居中

追答

这才是“将输入的字符居中显示”啊。
后来的要求是“将输入时的字符居中显示”啊?
如果是这样的话,那要面向对象的程序设计来实现了。可以设计文本框的居中方式为“居中”。

第2个回答  2016-01-10
/**
 *c语言练习程序
 *时间:2016/1/10
 *环境:vs2013
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int main(void){
//利用printf右对齐
//让这个输出占用控制台宽度值的一半减去字符串一半长度的内容
//控制台宽度可以右键左上角,属性查看,默认是80所以下面的50改为40
//我的是100,因为我自己改过
//你可打印一下s1,就明白我的想法了
    char s[] = "hell0000000000000000000000000000!";
    char s1[10]; 
    sprintf_s(s1,"%%%ds",50+(int)strlen(s)/2);
    printf(s1, s);
    getchar();
    return 0;
}
//原来是输入啊,换个tc写,包含conio.h,里面有个gotoxy()。其他没办法了

本回答被提问者采纳
第3个回答  推荐于2017-12-15
C语言对格式输出支持不是很好,因为一般C语言不会做太复杂的显示 ,最多也就打印一些调试信息, 你可以printf 格式输出符来试试
如: printf("%-100s\n", "adfdfadgda"); 可以百度一下追问

输入的时候要居中怎么办?

追答

用什么输入, linux shell终端吗?

追问

Windows控制台

本回答被网友采纳
第4个回答  2015-12-29

按以下代码的思路就能实现:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char str[20];
    printf("%55s","Please input a string: ");
    scanf("%s",str);
    printf("%53s\n",str);
    return 0;
}

追问

程序是输出的时候居中,我要的是输入的时候居中,可以吗?

追答

那就这样:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char str[20];
    printf("Please input a string:\n%*.*s",40,1,"");
    scanf("%s",str);
    printf("%s\n",str);
    return 0;
}

追问

还是感觉奇怪,代码怎么没有关于获取屏幕像素的?这样怎么可以做到居中?而且你的代码只是指定有40个空格,怎么做到随着输入自动居中?

追答

我只给你提供个思路,你要“自动居中”自己写一个输入函数不就可以了。想获取像素得在visual平台下,字符平台下不以像素为单位而是以字符为单位的,而且现在的编译器都C、C++兼容的,好多原来C的光标操作函数都失效了……想弄也可以,就是麻烦些!

相似回答