aboutsummaryrefslogtreecommitdiff
path: root/7.4/mscanf.c
diff options
context:
space:
mode:
authorsinanmohd <sinan@firemail.cc>2023-05-13 11:44:19 +0530
committersinanmohd <sinan@firemail.cc>2023-05-13 12:29:31 +0530
commite0b9da43b6311aa4413d030b27c6cdab000aeafd (patch)
tree13935b6213f5a81d4ede15893405f91dd2b453ed /7.4/mscanf.c
parent8a00a65c66914b7dbbf7c3c594d94698f11629dc (diff)
7.4: initial commit
Diffstat (limited to '7.4/mscanf.c')
-rw-r--r--7.4/mscanf.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/7.4/mscanf.c b/7.4/mscanf.c
new file mode 100644
index 0000000..8f09f35
--- /dev/null
+++ b/7.4/mscanf.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <stdarg.h>
+#include <ctype.h>
+#include "mscanf.h"
+
+#define MAXFMT 100
+
+void mscanf(char *fmt, ...)
+{
+ va_list ap;
+ int i;
+ char lfmt[MAXFMT];
+
+ va_start(ap, fmt);
+ for (; *fmt; fmt++) {
+ if (isblank(*fmt)) {
+ continue;
+ } else if (*fmt != '%') {
+ if (*fmt == getchar())
+ continue;
+ else
+ break;
+ }
+
+ i = 0;
+ while (i < MAXFMT && !isalpha(lfmt[i++] = *fmt++))
+ ;
+ lfmt[i] = '\0';
+ scanf(lfmt, va_arg(ap, void *));
+
+ fmt--;
+ }
+ va_end(ap);
+}