C++ C语言中的字符串操作?
我想打印一个字符数组,这些字符首先是下划线。 然后用户可以在这些下划线上写字符。我使用了gotoxy(),但它不能正常工作。 这就是我写的:C++ C语言中的字符串操作?,c++,arrays,dos,borland-c++,C++,Arrays,Dos,Borland C++,我想打印一个字符数组,这些字符首先是下划线。 然后用户可以在这些下划线上写字符。我使用了gotoxy(),但它不能正常工作。 这就是我写的: int main(void) { char arr[20]; int i; char ch; clrscr(); for(i=0;i<=20;i++) { textattr(0x07); cprintf("_"); } do {
int main(void)
{
char arr[20];
int i;
char ch;
clrscr();
for(i=0;i<=20;i++)
{
textattr(0x07);
cprintf("_");
}
do
{
for(i=0;i<=20;i++)
{
//gotoxy(i,0);
//ch = getche();
if( isprint(ch) == 1)
{
arr[i] = ch;
gotoxy(i,0);
//printf("%c",ch);
}
}
} while(i == 20);
getch();
return 0;
}
int main(无效)
{
char-arr[20];
int i;
char ch;
clrsc();
对于(i=0;i而言,打印字符数组相当容易:
char* str = your_array;
while(*str) {
putc(*str++);
}
从内存中输出一个字符串到屏幕。第一件事是:您可能不想在主函数中调用所有对gotoxy
、textattr
和cprintf
的调用,因为主函数不应该这样做
更可能的情况是,主函数的目的是“从用户那里读取一些文本,并在输入字段中很好地显示出来”。因此,您应该将其作为一个函数:
static int
nice_input_field(char *buf, size_t bufsize, int x, int y) {
int i, ch;
gotoxy(x, y);
for (i = 0; i < bufsize - 1; i++) {
cprintf("_");
}
i = 0;
gotoxy(x, y);
while ((ch = readkey()) != EOF) {
switch (ch) {
case '...': /* ... */
break;
case '\b': /* backspace */
cprintf("_");
i--;
gotoxy(x + i, y);
break;
case '\t': /* tabulator */
case '\n': /* enter, return */
buf[i] = '\0';
return 0; /* ok */
default: /* some hopefully printable character */
if (i == bufsize - 1) {
cprintf("\a"); /* beep */
} else {
buf[i++] = ch;
gotoxy(x + i, y);
cprintf("%c", buf[i]);
}
}
}
/* TODO: null-terminate the buffer */
return 0;
}
static int
漂亮的输入字段(char*buf,size\t bufsize,int x,int y){
int i,ch;
gotoxy(x,y);
对于(i=0;i
您的代码非常特定于DOS。对于以便携方式读取即时输入的问题,没有一个很好的通用解决方案。它确实经常被问到,因此我认为C常见问题解答已经分解,并包含了一个您可能想要找到的答案
也就是说,我认为你的错误是,
gotoxy(1,1)
是屏幕的上角,而不是0,0。所以你想要gotoxy(I,1)
我很乐意回答,但请清除你问题中的标记。每行代码前有四个空格缩进。你使用的编译器是什么?conio.h没有得到很好的支持(如果有的话)如果你没有使用Borland,也许这就是为什么你不能让它正常工作的原因?你试过诅咒吗?你应该把这个问题标记为msdos
或borlandc
或任何与CLRSC
和gotoxy
函数相关的东西,它们不是C的一部分。“它不能正常工作”-请指定与您预期不同的情况。例如,错误、无输出或输出位置错误等。输出必须为20个下划线,光标位于要在其上写入的第一个下划线中,但这不会发生。尽管查看您的代码,但我不确定是否正确理解您的问题。当我运行必须已经打印了下划线,下划线的数量是数组中元素的数量。然后写入指针必须在第一个下划线处,当我写入任何字符时,它将被写入该确切位置并存储在数组中。哦,我知道你想要什么了。你这样做是错误的。诅咒或诅咒,如sugges上面的ted会让你的生活更轻松。