c - 如何在for循环中使用scanf

标签 c input formatting scanf

每当我尝试读取输入时

for (int i = 1; i <= 10; ++i) {
    scanf("(%c, %d, %d, %d)",&charv,&intv1,&intv2,&intv3);
}

我只访问了一次scanf()。有什么问题?

输入 -> (P, 1, 2, 3)......(P, 2, 3, 12)

最佳答案

您对 scanf() 的使用情况是错的。您必须提供指向变量的指针 来存储 scanf() 读取的值.你需要像下面这样使用它

for (int i = 1; i <= 10; ++i) {
    scanf("%c, %d, %d, %d",&charVar,&intvar1,&intVar2,&intVar3);
}

编辑:

要点 1:提供的格式字符串 应该与输入完全匹配。否则,scanf()将失败。如果您输入的格式不是 (<char>, <int>.... ,它会失败。缺少( , ) , ,将导致提供的格式字符串与输入不匹配并生成 scanf()停止扫描。强烈建议检查 scanf() 的返回值以确保其成功。

第 2 点:避免阅读 \n由先前的 ENTER<\kbd> 键存储,您应该在 %c 之前添加一个前导空格.所以,你可以使用类似的东西

scanf(" %c, %d, %d, %d",&charVar,&intvar1,&intVar2,&intVar3);
       ^
       |
     Notice here

关于c - 如何在for循环中使用scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29797394/

相关文章:

c - win api - 如何为 TreeView 实现单独的事件过程

c - 我为 C 编程作业创建的 system.h 文件是否有可能给我的操作系统带来问题?

java - 如何组合Switch语句?

c - fgets() 之后 buf 的左边部分是什么?

linux - 通过 linux 脚本将输出写入文件?

html - CSS 跨度格式化

html - 格式化文本和元素符号点

c - 是否可以获取宏的地址?

c - 在C-pset5 cs50中加载trie数据结构

html - 将两个并排的 div 居中,在缩小窗口屏幕大小时使 div float