问答题 1.  请编写函数fun,其功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234。
    注意:部分源程序给出如下。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
    试题程序:
    #include<stdio.h>
    #include<string.h>
    long fun(char * p)
    {
    }
    void msin()
    {
    char s[6];
    long n;
    printf("Enter a string:\n");
    gets(s);
    n=fun(s);
    printf("%ld\n",n);
    }
【正确答案】long fun (char *p)
   {
   long n=0;
   int flag=1;
   if(* p =='-')/*负数时置flag为-1*/
   {p++;flag=-1;}
   else if(*p=='+')/*正数时置flag为1*/
   p++;
   while(*p!='\0')
   {n=n* 10 +* p-'0';/*将字符串转成相应的整数*/
   p++;
   }
   return n * flag;
   }
【答案解析】
   if语句的作用是判断该字符串为正数还是负数,while循环的作用是将字符串转成相应的整数。注意:*p是一个字符(例如'9'、'4'),并不是一个数,要将其转成相应的数字需令其减去'0'(不是'\0'),即* p-'0'就得到* p这个字符的相应数字,例如'0'-'0'=0、'8'-'0'=8等。必须在程序的前面加#include<stdlib.h>,函数atol的作用是将字符串转换成长整型数,它是一个库函数。