标签: scanf

使用scanf()读取的字符串大小不超过

编辑:对于我的班级,我必须使用scanf.所以推荐其他输入方式不是我正在寻找的解决方案(如果有一个涉及scanf).


如果我正在读取小项目的用户输入(例如,游戏).让我们说我会问would you like to play? 这会接受yesno回答.所以我写了一些像这样的简单代码:

#include <stdio.h>

int main(void)
{
     char string[3]; //The max number of letters for "yes".

     printf("Would you like to play?");
     scanf("%s", string);
}
Run Code Online (Sandbox Code Playgroud)

所以这段代码应该简单地要求他们输入yesno.我正在设定我char array的大小3.这样它足够大yes,也可以no.但是如果有人要输入无效的输入,比如yesss,我知道如何比较字符串以后处理这样的事件,但是这不会在技术上/可能覆盖我声明的其他局部变量,因为它会扩展到我的数组长度之外?如果是这样,有没有办法处理这个限制3个输入字符或什么?如果没有,为什么/如何知道只输入3的大小?

*注意:我是C的新手,我找不到这个,所以即使这很简单,我也很感激.因为我显然缺少一些东西.我来自java背景,这甚至都不是问题.

c string scanf format-specifiers

31
推荐指数
4
解决办法
4万
查看次数

你怎么读C中的scanf直到EOF?

我有这个但是一旦它到达假定的EOF它再次重复循环和scanf.

int main(void)
{
        char words[16];

        while(scanf("%15s", words) == 1)
           printf("%s\n", words);

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

c scanf eof

30
推荐指数
4
解决办法
14万
查看次数

获取sscanf读取的字符数?

我正在解析一个字符串(a char*),我正在使用sscanf它将字符串中的数字解析为双精度数,如下所示:

// char* expression;
double value = 0;
sscanf(expression, "%lf", &value);
Run Code Online (Sandbox Code Playgroud)

这很好用,但我想继续通过常规方法解析字符串.我需要知道已经解析了多少个字符,sscanf以便我可以从新的偏移量恢复手动解析.

显然,最简单的办法就是以某种方式计算出的字符数sscanf分析,但如果没有简单的方法来做到这一点,我开放的替代双解析选项.但是,我目前正在使用sscanf它,因为它快速,简单,易读.无论哪种方式,我只需要一种方法来评估double并继续解析它.

c scanf string-parsing

30
推荐指数
1
解决办法
1万
查看次数

intptr_t和uintptr_t的字符串格式

什么是字符串格式intptr_t, uintptr_t 哪个对32位和64位架构都有效.

编辑

warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type "AAA"
Run Code Online (Sandbox Code Playgroud)

这是我在64位但不是32位的警告.

  intptr_t  AAA
Run Code Online (Sandbox Code Playgroud)

c formatting printf scanf

29
推荐指数
1
解决办法
2万
查看次数

什么是sscanf的Java等价物,用于使用已知模式解析字符串中的值?

所以我来自C背景(原来最初,虽然我已经有近5年没用过那种语言了)而且我正在尝试用Java中的字符串解析一些值.在CI中将使用sscanf.在Java中,人们告诉我"使用Scanner或StringTokenizer",但我看不出如何使用它们来实现我的目的.

我的输入字符串看起来像"17-MAR-11 15.52.25.000000000".CI会做类似的事情:

sscanf(thestring, "%d-%s-%d %d.%d.%d.%d", day, month, year, hour, min, sec, fracpart);
Run Code Online (Sandbox Code Playgroud)

但在Java中,我所能做的就是:

scanner.nextInt();
Run Code Online (Sandbox Code Playgroud)

这不允许我检查模式,对于"MAR"我最终不得不做以下事情:

str.substring(3,6);
Run Code Online (Sandbox Code Playgroud)

可怕!当然有更好的方法吗?

java scanf

29
推荐指数
3
解决办法
7万
查看次数

scanf格式说明符中的星号是什么意思?

所以我偶然发现了这段代码,我无法弄清楚它的用途是什么,或者它是如何工作的:

int word_count;
scanf("%d%*c", &word_count);
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是%*d引用char指针或word_count不接受char变量.

有人可以对此有所了解吗?

c scanf char format-specifiers

29
推荐指数
3
解决办法
3745
查看次数

使用scanf()获取多个值

我正在使用scanf()从用户那里获取一组int.但我希望用户一次提供所有4个整数而不是4个不同的提示.我知道我可以通过以下方式获得一个价值:

scanf( "%i", &minx);
Run Code Online (Sandbox Code Playgroud)

但我希望用户能够做到这样的事情:

Enter Four Ints: 123 234 345 456
Run Code Online (Sandbox Code Playgroud)

是否有可能做到这一点?

c scanf

28
推荐指数
4
解决办法
18万
查看次数

scanf:"%[^ \n]"跳过第二个输入,但"%[^ \n]"不跳过.为什么?

请考虑以下代码:

#include <stdio.h>

int main (void)
{
  char str1[128], str2[128], str3[128];

  printf ("\nEnter str1: ");
  scanf ("%[^\n]", str1);
  printf ("\nstr1 = %s", str1);

  printf ("\nEnter str2: ");
  scanf ("%[^\n]", str2);
  printf ("\nstr2 = %s", str2);

  printf ("\nEnter str3: ");
  scanf ("%[^\n]", str3);
  printf ("\nstr3 = %s", str3);

  printf ("\n");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当它仅执行scanf提示的第一站时.该计划不会停止下一个scanfs.但是如果格式字符串从更改"%[^\n]"" %[^\n]"(注意之前的空格%),那么它可以正常工作.是否会自动接受先前输入缓冲区中的某些现有换行符?但冲洗stdin并不能解决这个问题.

造成这种情况的原因是什么.

c scanf

28
推荐指数
2
解决办法
8万
查看次数

在scanf()问题之前的C/C++ printf()

我正在使用Eclipse来编写C/C++代码,而我正在努力解决可能非常简单的问题.在我下面的代码中,我使用printf()和之后scanf().Althougth printf是在scanf()输出不同之前编写的.我能在这里找到类似问题的东西.但我无法解决它.有任何想法吗?

码:

#include <stdio.h>

int main()
{
    int myvariable;

    printf("Enter a number:");
    scanf("%d", &myvariable);
    printf("%d", myvariable);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

预期产量:

Enter a number:1
1
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

1
Enter a number:1
Run Code Online (Sandbox Code Playgroud)

c printf scanf output

28
推荐指数
2
解决办法
4万
查看次数

如何使用scanf读取空格分隔的数字

我想读取使用scanf()函数用空格分隔的数字(整数类型).
我已阅读以下内容

C,从单个输入行读取多个数字(scanf?)
如何用空格读取scanf
这对我没有多大帮助.如何读取带空格的数字作为分隔符.例如,我现在有以下数字作为输入,2 5 7 4 3 8 18我想将它们存储在不同的变量中.
请帮忙.

c scanf

27
推荐指数
2
解决办法
11万
查看次数

标签 统计

scanf ×10

c ×9

format-specifiers ×2

printf ×2

char ×1

eof ×1

formatting ×1

java ×1

output ×1

string ×1

string-parsing ×1