获取字符串后,在单个scanf中取字符串和整数会跳过其余的整数,为什么?如何在单扫描中完成?(代码片段) 您所在的位置:网站首页 c语言怎么输出一个字符串的数组中的数据 获取字符串后,在单个scanf中取字符串和整数会跳过其余的整数,为什么?如何在单扫描中完成?(代码片段)

获取字符串后,在单个scanf中取字符串和整数会跳过其余的整数,为什么?如何在单扫描中完成?(代码片段)

#获取字符串后,在单个scanf中取字符串和整数会跳过其余的整数,为什么?如何在单扫描中完成?(代码片段)| 来源: 网络整理| 查看: 265

关键词:

我需要从单个scanf获取整数和字符串。但是,除非我使用两个scanfs,否则代码不会使用剩余的整数。如何获得这个单一的scanf函数来获取我输入的所有内容?

struct student int r; char a[50]; int c1, c2, c3; float total, per; s[100]; main() int i, n; printf("Enter total number of students\n"); scanf("%d", &n); for (i = 0; i < n; i++) printf("Enter details of student\nRollNo Name c1 c1 c3 marks\n"); scanf("%d %[^\n]*%s %d %d %d", &s[i].r, s[i].a, &s[i].c1, &s[i].c2, &s[i].c3); // scanf("%d %d %d", &s[i].c1, &s[i].c2, &s[i].c3); this works for (i = 0; i < n; i++) printf("%d %s %d %d %d\n", s[i].r, s[i].a, s[i].c1, s[i].c2, s[i].c3); 答案

读取与换行符不同的字符串的格式是%[^\n],带有可选但强烈推荐的宽度前缀,用于存储到目标数组中的最大字符数。落后的*%s毫无意义。但请注意,此scanf转换说明符将接受标记号作为名称的一部分:

scanf应该在找到一个数字时停止读取该名称。这将允许用户在每个学生的单行上给出输入,他/她可能会根据提示进行操作。

其格式为%[^0-9\n],如果用户输入的名称超过49个字符,则要防止未定义的行为,请使用%49[^0-9\n]指定此限制。

使用scanf()解析输入仍然很脆弱:从无效输入中恢复是乏味的。

这是一个更正版本:

#include struct student int r; char a[50]; int c1, c2, c3; float total, per; s[100]; int main() int i, n; printf("Enter total number of students\n"); if (scanf("%d", &n) != 1 || n > 100) return 1; for (i = 0; i < n;) printf("Enter details of student\nRollNo Name c1 c1 c3 marks\n"); if (scanf("%d %49[^0-9\n] %d %d %d", &s[i].r, s[i].a, &s[i].c1, &s[i].c2, &s[i].c3) == 5) i++; else int c; fprintf(stderr, "input error\n"); /* consume the rest of the input line */ while ((c = getchar()) != EOF && c != '\n') continue; if (c == EOF) fprintf(stderr, "unexpected end of file\n"); return 1; for (i = 0; i < n; i++) printf("%d %s %d %d %d\n", s[i].r, s[i].a, s[i].c1, s[i].c2, s[i].c3); return 0; scanf--数据第一个字符是西文字符的scanf函数(代码片段)

...为会跳过非西文字符直到遇到第一个西文字符(也就是说字符串不能以非西文字符开头)1/*********************2**3*文件夹:▲01绪论*4**5*文件名:Scanf.c*6**7*********************/89#ifndefSCANF_C10#defineSCANF 查看详情

使用atoi,从字符串中获取整数

】使用atoi,从字符串中获取整数【英文标题】:Usingatoi,grabbingintegerfromstring【发布时间】:2017-12-3114:35:45【问题描述】:#include#include#includeintmain()charsir[3000];inti;intsuma=0;intlungime;scanf("%s" 查看详情

如何从单个文本文件中同时打印字符串和整数?

】如何从单个文本文件中同时打印字符串和整数?【英文标题】:HowdoIprintbothStringsandIntsfromasingletextfile?【发布时间】:2022-01-0600:38:09【问题描述】:我有一个文件,如下所示,但还有几个名称(每个单词和数字都在单独的行上... 查看详情

scanf 一次获取多个值

...一个char,然后,根据我刚刚读取的char值,它可以是一个字符串和一个int或一个字符串、一个int和另一个字符串等等。示例输入可能是:ctest20gooddtest10这是我写的:charc,*alpha,*beta;in 查看详情

实验2

...点数输出;%c:按字符输出;%e:按指数形式输出;%s:按字符串输出;%5d:输出宽度为5的十进制整数;%lf:输出双精度(double)型的浮点数;%.3f:输出小数点后保留3位数(四舍五入)的浮点数 %6.2f:输出宽度为6,小数点后... 查看详情

如何使用 scanf 从用户输入中获取字符串( char * ),由双引号分隔并包含空格 [关闭]

】如何使用scanf从用户输入中获取字符串(char*),由双引号分隔并包含空格[关闭]【英文标题】:howtogetwithscanfastring(char*)fromauserinput,delimitedbydoublequotesandcontainingspaces[closed]【发布时间】:2013-11-0400:41:09【问题描述】:我对c和c++... 查看详情

解析字符串以获取逗号分隔的整数字符对

】解析字符串以获取逗号分隔的整数字符对【英文标题】:Parsingstringtogetcomma-separatedintegercharacterpairs【发布时间】:2016-11-1306:49:12【问题描述】:我正在处理一个项目,在该项目中,我得到了一个以这种格式的标题开头的文件:... 查看详情

初识c语言(代码片段)

...二、变量的作用域和生命周期三、常量的进一步了解四、字符串五、转义字符六、注释七、总结一、变量的使用1、在叙述变量的使用之前先说一个C语言中的输入函数scanf   (1)scanf函数是C语言提供的一个输入函数scanf... 查看详情

我可以使用啥来获取整数输入而不是 C 中的 scanf?

】我可以使用啥来获取整数输入而不是C中的scanf?【英文标题】:WhatcanIusefortakingintegerinputinsteadofscanfinC?我可以使用什么来获取整数输入而不是C中的scanf?【发布时间】:2020-07-2906:34:53【问题描述】:我正在学习C。我目前正在使... 查看详情

如何将整数存储在字符数组的单个索引中?

】如何将整数存储在字符数组的单个索引中?【英文标题】:Howtostoreanintegerinasingleindexofcharacterarray?【发布时间】:2012-11-1822:45:15【问题描述】:我想在字符数组的单个索引中存储一个整数。itoa函数在这种情况下不起作用。有人... 查看详情

从字符串中提取单个(无符号)整数

】从字符串中提取单个(无符号)整数【英文标题】:Extractasingle(unsigned)integerfromastring【发布时间】:2011-09-1019:41:57【问题描述】:我想从包含数字和字母的字符串中提取数字,例如:"InMyCart:11items"我要提取号码11。【问题讨论... 查看详情

如果在 C 中使用 scanf 输入字符,如何获取打印错误

】如果在C中使用scanf输入字符,如何获取打印错误【英文标题】:HowtogeterrorstoprintifcharsareenteredusingscanfinC【发布时间】:2013-09-1702:34:38【问题描述】:我现在正在试验c,这个程序假设让用户输入一个介于10-100之间的数字,如果... 查看详情

AT&T 汇编 + C 函数。使用 Scanf 进行字符串输入

】AT&T汇编+C函数。使用Scanf进行字符串输入【英文标题】:AT&Tassembly+Cfunctions.UsingScanfforstringinput【发布时间】:2018-09-2609:30:33【问题描述】:我正在尝试在汇编中使用scanf来获取输入。据我所知,我必须以相反的顺序推送函... 查看详情

从文件中读取 64 位整数字符串

】从文件中读取64位整数字符串【英文标题】:Read64bitintegerstringfromfile【发布时间】:2008-10-3109:32:59【问题描述】:我们有一个文件,其中包含一个64位整数作为字符串。我们如何scanf()或以其他方式将此数字字符串解析为C++中的... 查看详情

使用 scanf() 进行输入验证 [重复]

...,屏幕上会显示错误消息?【问题讨论】:先将输入作为字符串是一种方法 查看详情

c ++拆分字符串并获取空格后的部分

】c++拆分字符串并获取空格后的部分【英文标题】:c++splittingastringandgettingthepartcomingafterwhitespace【发布时间】:2013-12-2800:37:11【问题描述】:我需要做一个字符串拆分,这样如果我有一个像下面这样的字符串stringfoo="thisIsTheTestInp... 查看详情

如何将切片字符串中的单个字符转换为 Python 中的整数?

】如何将切片字符串中的单个字符转换为Python中的整数?【英文标题】:HowtoconvertasinglecharinaslicedStringintoIntegerinPython?【发布时间】:2021-12-0409:56:36【问题描述】:例如,我有一个String="TGR1UK"我只需要字符串中的数字1来做一些数... 查看详情

实验二(代码片段)

...函数printf()和格式化输入函数scanf()%d%f%c%e%f%d输出整型,即整数部分时使用。若%d前有代码,则一并输出;%8d占8个字符位,字符位少于8位,左边用空格填满。%f输出浮点型,即小数时使用。%8f占八个字符位,字符位少于8个,左边... 查看详情



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有