12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /* strcnvt.c -- try strtol() */
- #include <stdio.h>
- #include <stdlib.h>
- #define LIM 30
- char * s_gets(char * st, int n);
- int main()
- {
- char number[LIM];
- char * end;
- long value;
-
- puts("Enter a number (empty line to quit):");
- while(s_gets(number, LIM) && number[0] != '\0')
- {
- value = strtol(number, &end, 10); /* base 10 */
- printf("base 10 input, base 10 output: %ld, stopped at %s (%d)\n",
- value, end, *end);
- value = strtol(number, &end, 16); /* base 16 */
- printf("base 16 input, base 10 output: %ld, stopped at %s (%d)\n",
- value, end, *end);
- puts("Next number:");
- }
- puts("Bye!\n");
-
- return 0;
- }
- char * s_gets(char * st, int n)
- {
- char * ret_val;
- int i = 0;
-
- ret_val = fgets(st, n, stdin);
- if (ret_val)
- {
- while (st[i] != '\n' && st[i] != '\0')
- i++;
- if (st[i] == '\n')
- st[i] = '\0';
- else // must have words[i] == '\0'
- while (getchar() != '\n')
- continue;
- }
- return ret_val;
- }
|