如何解释用户输入的字符串?

时间:2013-05-28 14:25:28

标签: c string embedded ascii type-conversion

int main()
{
printf("Welcome to the temperature control program:\n");
    printf("enter the ascii temperature characters");
    printf("enter the ascii characters of an euipment name with + or - and followed by a integer value");
    printf("type character terminated by carriage return");

    char tbuffer [tbuffer_length];
    printf("enter the temperature value");
    scanf("%7c", tbuffer);
    char *t;
    t = fgets (tbuffer, tbuffer_length, stdin );
    if(tbuffer[0] = 'A')
    {

    }
    if (tbuffer[0] = 'B')
    {

    }
    if (tbuffer[0] = 'C')
    {

    }

return 0;
}

在这种情况下,用户输入字符串值(例如:char buffer [7] = {'A','+','2','5','。','5','\ r'})如何将此字符串解释为A有设备A或B有设备B,+ 25.5有温度值(我想将此温度值转换为整数)和回车。在解释并将其转换为整数后,我需要通过接口发送(我知道如何通过接口发送)。给我一些解释的想法。

2 个答案:

答案 0 :(得分:0)

使用==运算符来比较值

int main()
{
printf("Welcome to the temperature control program:\n");
    printf("enter the ascii temperature characters");
    printf("enter the ascii characters of an euipment name with + or - and followed by a integer value");
    printf("type character terminated by carriage return");

    char tbuffer [tbuffer_length];
    printf("enter the temperature value");
    scanf("%7c", tbuffer);
    char *t;
    t = fgets (tbuffer, tbuffer_length, stdin );
    if(tbuffer[0] == 'A')
    {

    }
    if (tbuffer[0] == 'B')
    {

    }
    if (tbuffer[0] == 'C')
    {

    }

return 0;
}

答案 1 :(得分:0)

在您的代码scanf("%7c", tbuffer);中应该是scanf("%7s", tbuffer);

同样if(tbuffer[0] = 'A')应为if(tbuffer[0] == 'A')。其他if语句也是如此。

要将字符串转换为整数,请尝试以下代码

char temp[10];
int dec,frac; 



if(tbuffer[0] = 'A')
{
   i=2;
   j=0;
   while(tbuffer[i] != '.')
   {
      temp[j]=tbuffer[i];
      j++;
      i++;
   }
   temp[j]='\0';
   dec=atoi(temp);
   j=0;
   i++;
   while(tbuffer[i] != '\0')
   {
      temp[j]=tbuffer[i];
      j++;
      i++;
   }   
   temp[j]='\0';
   frac=atoi(temp);
}

现在变量dec包含小数部分,frac包含分数。

例如,如果buffer[7]= {'A', '+', '2', '5', '.','5','\0'};dec = 25frac = 5