字符数组转整数

标签 c integer arrays

我有 2 个问题。

这里是 C++ 引用

#include <stdio.h>

int main ()
{
  char sentence []="Rudolph is 12 years old";
  char str [20];
  int i;

  sscanf (sentence,"%s %*s %d",str,&i); <---
  printf ("%s -> %d\n",str,i);

  return 0;
}

问题 1. %*s 到底在做什么?

我的程序正在构建一个哈希表。

它询问用户是否输入

q- quit
i <int> - inserts integer //must be on same line
d <int> - deletes integer //must be on same line
etc....

For example:

in order to insert "35" I would have to type:

i 35

问题 2。由于“q”没有整数,因此 C++ 引用对“q”和“i 35”都适用吗?

char choice[10];
char option;
int i;

sscanf(choice, "%c %d", &option, &i);

如果输入“q”(未附加整数)以及输入“i 35”(附加整数),这是否有效?

最佳答案

这意味着它应该从流中跳过该类型。例如输入流是:

"Rudolph is 12 years old"

第一个%s将捕获“Rudolph”%*s将“读取但忽略”“is” (即不将其存储在变量中),然后 %d 将读取并捕获 12

我不太清楚你的第二个问题是什么意思。我相信您是在问 "%s %*s %d" 格式是否适用于从输入中读取 "q" 。在这种情况下,您应该使用不同的格式,例如单个字符的 "%s""%c"

针对您更新的问题,您可以轻松尝试一下并查看。在我的测试中,它确实适用于 "q" 的输入:sscanf 单独保留 int 但确实读取了 "q”

关于字符数组转整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15938444/

相关文章:

c - 传递一个 int 指针,然后检查值或 null

Python - 将字符串和转义的十六进制字符串数据转换为整数的更好方法?

c++ - 在 "uint8_t | (uint8_t << 8)"中是否有不同的整数提升处理方式?

javascript - 如何将 json 数组元素动态显示到 select 标签中?

java - JOptionPane 降序排列数组*几乎就在那里*

c - 点积两个数组

c - 错误 C2536 : : cannot specify explicit initializer for arrays

合并数组中的全部元素并将其存储在索引 0 中

c - OpenGL - 着色器,符号在 v. 和 f. 中用 2 种不同的类型定义。着色器

C++ 从文本文件中读取多个整数