精华内容
下载资源
问答
  • 如何使用C从键盘读取字符串
    2021-05-21 16:35:24

    从不知道长度的任何文件(包括stdin)读取输入时,通常最好使用getline而不是NULL或fgets,因为getline将自动处理字符串的内存分配,只要您提供一个空指针来接收 输入的字符串。 此示例将说明:

    #include

    #include

    int main (int argc, char *argv[]) {

    char *line = NULL; /* forces getline to allocate with malloc */

    size_t len = 0; /* ignored when line = NULL */

    ssize_t read;

    printf ("\nEnter string below [ctrl + d] to quit\n");

    while ((read = getline(&line, &len, stdin)) != -1) {

    if (read > 0)

    printf ("\n read %zd chars from stdin, allocated %zd bytes for line : %s\n", read, len, line);

    printf ("Enter string below [ctrl + d] to quit\n");

    }

    free (line); /* free memory allocated by getline */

    return 0;

    }

    相关部分为:

    char *line = NULL; /* forces getline to allocate with malloc */

    size_t len = 0; /* ignored when line = NULL */

    /* snip */

    read = getline (&line, &len, stdin);

    将getline设置为NULL会导致getline自动分配内存。 输出示例:

    $ ./getline_example

    Enter string below [ctrl + d] to quit

    A short string to test getline!

    read 32 chars from stdin, allocated 120 bytes for line : A short string to test getline!

    Enter string below [ctrl + d] to quit

    A little bit longer string to show that getline will allocated again without resetting line = NULL

    read 99 chars from stdin, allocated 120 bytes for line : A little bit longer string to show that getline will allocated again without resetting line = NULL

    Enter string below [ctrl + d] to quit

    因此,使用getline,您无需猜测用户的字符串将持续多长时间。

    更多相关内容
  • 1、cin cin读取时,遇到空格、制表符、回车会立即终止输入 代码: #include <iostream> #include <string> using namespace std;...使用cin进行输入时,想要输入多个字符串,可以使用while 代码: .

    1、cin

    cin读取时,遇到空格、制表符、回车会立即终止输入

    代码:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        string s;
        cin >> s;
        cout << s << endl;
        return 0;
    }
    

    输出:

     

    使用cin进行输入时,想要输入多个字符串,可以使用while

    代码:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        string s;
        while(cin>>s)
            cout << s << endl;
        return 0;
    }
    

    输出:

    2、getline()

     getline()读取一行字符串,通过回车键来确定输入的结尾

    代码:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        string s;
        getline(cin,s);
        cout << s << endl;
        return 0;
    }

    输出:

    3、cin.get()

     读取一个字符

    代码:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        char ch;
        ch=cin.get();
        cout << ch << endl;
        char sh;
        cin.get(sh);
        cout<<sh<<endl;
        return 0;
    }
    

    输出:

    读取多个字符,可读取空格,最后会自动保存一个'\0'

    代码:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        char ch[5];
        cin.get(ch,5);
        cout << ch << endl;
        return 0;
    }

    输出:

    4、cin.getline()

    接收一串字符,可以读取空格,最后默认添加'\0'

    代码:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        char ch[5];
        cin.getline(ch,5);
        cout << ch << endl;
        return 0;
    }
    

    输出:

    5、gets()

     接收一串字符,可以读取空格,但是,gets()函数在读取字符串时,可以超过字符数组的容量

    代码:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        char ch[5];
        gets(ch);
        cout << ch << endl;
        return 0;
    }

    输出:

    展开全文
  • 1.有很多漏洞的实现方法 public static void main(String[] args) { System.out.println("开始输入:... //从键盘输入字符串 Scanner input = new Scanner(System.in); //获取键盘输入的字符串 ...

    1.有很多漏洞的实现方法

    public static void main(String[] args) {
            System.out.println("开始输入:");
            //从键盘输入字符串
            Scanner input = new Scanner(System.in);
            //获取键盘输入的字符串
            String str = input.nextLine();
            System.out.println("结束");
            //字符串转字符数组
            char[] num = str.toCharArray();
            //使用StringBuffer对象存储拼接后的数字
            StringBuffer hire = new StringBuffer();
            //如果字符串以“-”开头
            if(str.startsWith("-")) {
                //在拼接前给字符串加上符号
                hire.append("-");
                for (int i = 0; i < num.length; i++) {
                    hire.append(num[i]);
                }
            }else {
                //Character.isDigit(a) 判断a是否是数字,如果是,则返回true,否则返回false
                //判断字符串的开否是否是数字,如果不是,直接输出0
                if(!Character.isDigit(num[0])) {
                    System.out.println(0);
                }else {
                    //如果是数字,则对数字进行拼接
                    hire.append("-");
                    for (int i = 0; i < num.length; i++) {
                        hire.append(num[i]);
                    }
                }
            }
            System.out.println(hire);
        }

    2.借鉴大神的实现方式

    public class Demo {

        public static void main(String[] args) {
            System.out.println("开始输入:");
            //从键盘输入字符串
            Scanner input = new Scanner(System.in);
            //获取键盘输入的字符串
            String str = input.nextLine();
            System.out.println("结束");
            int myAtoi = myAtoi(str);
            System.out.println(myAtoi);
        }
        
        public static int myAtoi(String str) {
            // 合法性判断
            if (str.isEmpty()) return 0;
            // 正负号标记
            int sign = 1;
            // 转换值
            int base = 0;
            // 索引位数
            int i = 0;
            // 剔除开始空白字符
            while (str.charAt(i) == ' ')
                i++;
            // 判断正负号
            if (str.charAt(i) == '-' || str.charAt(i) == '+')
                sign = str.charAt(i++) == '-' ? -1 : 1;
            // 索引有效数字字符
            while (i < str.length() && str.charAt(i) >= '0' && str.charAt(i) <= '9') {
                // that statement is used to test if the num is bigger than INT_MAX after the str[i] is handled, if base > INT_MAX/10, 
                // then base10+ str[i] -‘0’> base10>INT_MAX, or when base== INT_MAX/10, that means all the places are the same as INT_MAX except the ones place, so str[i]>‘7’ is needed. 
                // 上面这段是LeetCode国外站对下面代码的解释。
                // 简单来说就是
                // 如果`base > MAX_VALUE/10`,那么`base*10 + new_value` > `base*10` > `MAX_VALUE`。这个应该很容易理解,这种情况下就会发生溢出。
                // 若`base == INT_MAX/10`,而且`new_value = str.charAt(i++) - '0'`大于`7`,也会发生溢出。因为`MAX_VALUE = 2147483647`
                if (base > Integer.MAX_VALUE / 10 || (base == Integer.MAX_VALUE / 10 && str.charAt(i) - '0' > 7)) {
                    return (sign == 1) ? Integer.MAX_VALUE : Integer.MIN_VALUE;
                }
                // 计算转换值,str.charAt(i++) - '0'可以把字符串转换成数字
                base = 10 * base + (str.charAt(i++) - '0');
            }
            // 计算结果值
            return base * sign;
        }

    注意:判断字符串的值是否超出32位有符号数的范围的思路:

    1.把字符串转换成字符数组,然后依次获取每个字符,定义一个起始值int为0的变量来代表获取到的字符base,定义一个int为1的变量来代表字符的符号sign。判断base是否大于整数的最大值除以10,或者判断base如果=整数的最大值除以10,并且获取到的当前字符的值大于7,如果是,判断base的符号,如果是“-”,则返回整数的最小值,否则返回整数的最大值;如果base的大小在32位整数范围内,则返回base*sign;

    展开全文
  • java键盘读取字符

    2021-03-12 10:19:40
    // 向ReadStandard程序写入内容,这些内容将被ReadStandard读取 ps.println("普通字符串"); ps.println(new WriteToProcess()); InputStream error = p.getErrorStream(); System.out.println...

    public class WriteToProcess {

    public static void main(String[] args) {

    PrintStream ps = null;

    try {

    // 运行java ReadStandard命令,返回运行该命令的子进程

    System.out.println("start");

    Process p = Runtime.getRuntime().exec("java ReadStandard");

    // 以p进程的输出流创建PrintStream对象

    // 这个输出流对本程序是输出流,对p进程则是输入流)

    ps = new PrintStream(p.getOutputStream());

    // 向ReadStandard程序写入内容,这些内容将被ReadStandard读取

    ps.println("普通字符串");

    ps.println(new WriteToProcess());

    InputStream error = p.getErrorStream();

    System.out.println(convertStreamToString(error));

    System.out.println("start");

    } catch (IOException ex) {

    ex.printStackTrace();

    } finally {

    if (ps != null)

    ps.close();

    }

    }

    public static String convertStreamToString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));

    StringBuilder sb = new StringBuilder();

    String line = null;

    try {

    while ((line = reader.readLine()) != null) {

    sb.append(line + "/n");

    }

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    try {

    is.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    return sb.toString();

    }

    }

    // 定义一个ReadStandard类,该类可以接受标准输入,

    // 并将标准输入写入out.txt文件。

    class ReadStandard {

    public static void main(String[] args) throws Exception {

    System.out.println("ReadStandard.");

    // 使用System.in创建Scanner对象,用于获取标准输入

    Scanner sc = new Scanner(System.in);

    PrintStream ps = new PrintStream(new FileOutputStream("out.txt"));

    // 增加下面一行将只把回车作为分隔符

    sc.useDelimiter("\n");

    // 判断是否还有下一个输入项

    while (sc.hasNext()) {

    // 输出输入项

    ps.println("键盘输入的内容是:" + sc.next());

    }

    ps.close();

    }

    }

    展开全文
  • public class TestScanner { public static void main(String[] args) { Scanner s = new Scanner(System....System.out.println("输入字符串"); while (true) { String line = s.nextLine(); if (line.equ
  • 我想知道是否可以将文本框中的文本转换为变量(/string)。我使用的是Python3.3.5,我看到了很多Entrybox to variable,但它在文本框上不起作用。下面是我正在使用的代码:from tkinter import *main = Tk()sr=...
  • 在程序里定义一个剪刀石头布的规则,然后定义两个字符型变量,接着从键盘上接收两个数据分别赋给这两个变量,再按照已经设定好了的规则来比较,最后输出...然后定义一个字符串变量,先从键盘上接收这个字符串的内容,Stri...
  • VS2017使用scanf()从键盘读取字符串

    千次阅读 2019-04-14 10:52:44
    vs2017上无法使用scanf()函数,但是提供了scanf函数,在使用scanf()读取二维数组时... //输入一个字符串到第二行 printf(”%s“,a[1]); return 0; } 上述代码语法上并没有什么问题,但是执行时报错。 解决方法...
  • python中从键盘读取字符串操作注意

    千次阅读 2016-09-03 13:09:56
    input与raw_input比较: 1.input函数:需要以合法的python表达式形式输入 如: ...>>> name = input ("what is your name ?...当输入为字符型:lucy时,抱错: Traceback (most recent call last):  F
  • #include<stdio.h> int main() { char a[100]; int i=0; scanf("%s",a); for(;a[i];i++) a[i]=a[i]-'0'; a[i]=0; for(int j=0;j<i;j++) printf("%d",a[j]); }
  • java从键盘输入字符串的方法

    千次阅读 2021-03-10 03:45:26
    java从键盘输入字符串的方法发布时间:2020-06-29 09:15:07来源:亿速云阅读:142作者:Leah本篇文章为大家展示了java从键盘输入字符串的方法,代码简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细...
  • 在java中如何从键盘读取一个字符串

    万次阅读 多人点赞 2016-11-09 18:53:09
    在java中字符和字符串用到的非常多,那我们如何从键盘读取一个字符呢?  Scanner s = new Scanner(System.in);  String str = s.nextLine();  这时候输入的str是一个字符串而不是字符,  char ch = str....
  • python中使用input()函数来获取用户输入函数 input() 让程序暂停运行,等待用户输入一些文本,获取用户的输入后,Python将其存储到一个变量中,以方便后期使用。name = input("Tell me your name,and I will repeat ...
  • a中最小元素后的字符被舍弃了。#include#includevoid main(){int i,min=0;char a[20],b[10];printf("input a[]=");gets(a);printf("input b[]=");gets(b);for(i=0;a[i+1]!='\0';i++)if(a[i+1]<=a[min]) min=i;a...
  • IDEA内Test的Scanner输入、Java字符串转大写输出
  • java从键盘读取字符

    2019-11-25 12:02:26
    java从键盘读取字符 public BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); BufferedReader是个字符流 整体意思就是用InputStreamReader这个中介把System.in这个字节流转换成字符流...
  • 从键盘读入一行信息,根据读入的内容来判定是否发生了异常。如果读入的是空串,则抛出EmptyStringException异常;如果读入的内容中包含有数字,则抛出IncludeNumberException异常。 /*提示:程序中用到String的...
  • 控制台读取字符串

    千次阅读 2020-06-10 19:45:08
    控制台读取字符串 我们可以使用input()控制台读取键盘输入的内容。
  • 汇编:从键盘读取字符

    千次阅读 2019-01-10 19:45:53
    键盘上有芯片,主板上有端口. ...cpu就会通过数据线,地址线,控制线读取端口中的字符‘a’    cpu内存中读取内容,是通过 "mov 寄存器,内存地址" 的方式. 那么怎么读取硬件(端口)的内容呢? 通过...
  • 昨天接触了一下用户登录,发现从键盘读取数据到缓冲区,再保存到程序变量这个过程,还是需要格外注意,因为一不小心,就容易读取错误。下面用getchar函数说明一下: getchar()函数 函数原型:int getchar(void) ...
  • c#获取键盘输入的字符串

    千次阅读 2019-08-22 00:26:14
    在控制台应用程序中,Console.ReadLine()用于获取键盘上输入的字符串; string str = Console.ReadLine(); 若需要输入整数需进行转换: int num = Convert.ToInt32(str); 输入小数的转换: double num1 = Convert....
  • package afternoon.demo02; import java.util.HashSet; import java.util.Scanner;... //从键盘获取一行输入字符串,要求去除重复字符。 Scanner input = new Scanner(System.in); System.out.println.
  • 本篇文章是对C语言把文件读入字符串以及将字符串写入文件的方法进行了详细的分析介绍,需要的朋友参考下
  • Java中Scanner连续读取键盘输入字符串

    千次阅读 2020-06-15 14:00:04
    以吸收换行符,否则会出现跳过第一条读取语句,直接执行第二条读取语句。 下面展示一些 实例。 System.out.println("学生学号:"); String id = scanner.nextLine(); scanner.nextLine(); System.out.println("学生...
  • C语言中从键盘输入字符串时的一些问题

    万次阅读 多人点赞 2019-05-17 20:52:10
    C语言中从键盘输入字符串时的一些问题 1.scanf() scanf()在输入字符串时有很大的弊端, 例如: 1). scanf()在从键盘读入字符时并不会根据所定义的字符数组的大小来控制读入多少个 , 而是scanf( ) 中传入的地址开始...
  • 读取一行以空格分隔的字符串。C语言、C++、Java。
  • C语言完整的获取键盘输入字符

    千次阅读 2021-01-22 16:40:47
    C语言完整的获取键盘输入字符 获取输入函数 int getsline(char *result) { int point = 0; int word; while(1) { word = getc(stdin);//等待用户输入或缓存中读一个字符 if(word != '\n')//读到回车符就...
  • 1.从键盘获取一串字符串,去除重复的字符后输出 2.产生10个0~20的随机数,要求不能重复 分析: 这两道题的关键就是,在集合中不能存取相同的元素,所以我们可以直接创建set集合、在存储元素时不能出现重复元素;...
  • c语言从键盘输入字符串

    万次阅读 多人点赞 2018-10-21 15:15:52
    #include<stdio.h> #include<...// 输入三个字符:每输入一个字符就要用空格或回车间隔,结束时输入回车 int main(){ char b[4]; for(int i = 0;i < 3;i++) { scanf("%c",&am...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 167,721
精华内容 67,088
关键字:

从键盘读取字符串

友情链接: 500filmesnacionais.rar