C语言要限定输出字符串的长度应该怎么 *** 作?

C语言要限定输出字符串的长度应该怎么 *** 作?,第1张

在C语言中,输入输出字符串有以下两种方式:\r\n1 用scanf/printf输入输出。\r\nscanf/printf是C语言的格式化输入输出函数,可以用于输入输出各种基础类型,字符串(char*)也在其支持范围内。\r\n格式化字符为%s。\r\n定义\r\nchar str[100]\r\n输入\r\nscanf("%s",str)\r\n输出\r\nprintf("%s",str)\r\n\r\n2 C语言还支持专门的字符串输入输出函数:gets/puts。\r\ngets的作用为,读入一行输入,并将读到的换行符替换为字符串结束符。\r\nputs的作用为,将字符串单行输出,即输出字符串内容后,会自动在结尾增加换行。\r\n定义\r\nchar str[100]\r\n输入\r\ngets(str)\r\n输出\r\nputs(str)

使用DocumentFilter

import java.awt.EventQueue

import java.awt.GridBagLayout

import java.awt.Toolkit

import javax.print.attribute.AttributeSet

import javax.swing.JFrame

import javax.swing.JTextField

import javax.swing.UIManager

import javax.swing.UnsupportedLookAndFeelException

import javax.swing.text.AbstractDocument

import javax.swing.text.BadLocationException

import javax.swing.text.DocumentFilter

import javax.swing.text.DocumentFilter.FilterBypass

public class FilterTest {

public static void main(String[] args) {

new FilterTest()

}

public FilterTest() {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {

}

JTextField field = new JTextField(10)

((AbstractDocument)field.getDocument()).setDocumentFilter(new SizeFilter(5))

JFrame frame = new JFrame("Testing")

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

frame.setLayout(new GridBagLayout())

frame.add(field)

frame.pack()

frame.setLocationRelativeTo(null)

frame.setVisible(true)

}

})

}

public class SizeFilter extends DocumentFilter {

private int maxCharacters

public SizeFilter(int maxChars) {

maxCharacters = maxChars

}

public void insertString(FilterBypass fb, int offs, String str, AttributeSet a)

throws BadLocationException {

if ((fb.getDocument().getLength() + str.length()) <= maxCharacters) {

super.insertString(fb, offs, str, a)

} else {

Toolkit.getDefaultToolkit().beep()

}

}

public void replace(FilterBypass fb, int offs, int length, String str, AttributeSet a)

throws BadLocationException {

if ((fb.getDocument().getLength() + str.length()

- length) <= maxCharacters) {

super.replace(fb, offs, length, str, a)

} else {

Toolkit.getDefaultToolkit().beep()

}

}

}

}

直接定义字符串的最大长度就可以了,自后超过此长度的话,之后就无法插入,返回size有问题。

可以通过alter更改字符串长度:

sql: alter tablename modify columnName varchar2(25)

解释:以上语句重置表中字段的属性,设置最大长度是25个字节,超过的话,无法正常插入。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12071049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存