编写一个程序,提示用户输入电话号码

时间:2014-03-19 20:13:15

标签: c

我正在编写一个程序,向用户提供表格(xxx)xxx-xxxx中的电话号码,然后以C语言显示xxx.xxx.xxxx格式的数字。

#include <stdio.h>

int main(void) {    
    int d1, s2, d3;

    printf("enter phone number[(xxx) xxx-xxxx]:"); //phone number to be entered
    sscanf("%d %d-%d", d1, s2, d3); //to read input in above format
    printf("you entered %d.%d.%d", d1, s2, d3);

    return 0;
}

我的问题是scanf无法读取使用()圆括号输入的数据。

5 个答案:

答案 0 :(得分:5)

您打算使用scanf代替sscanf。此外,您应该将要写入的变量的内存地址写入scanf。您应该将scanf的格式字符串更改为""scanf返回成功分配的输入项数。检查3的此值,以查找输入是否以所需格式输入。

#include <stdio.h>

int main(void) {    
    int d1, s2, d3;
    int val; // to check if scanf was successful

    // newline causes the string to be immediately 
    // written to stdout

    printf("enter phone number[(xxx) xxx-xxxx]:\n"); 
    val = scanf("(%d)%d-%d", &d1, &s2, &d3);

    // check if scanf was successful
    if(val == 3)
        printf("you entered %d.%d.%d", d1, s2, d3);
    else 
        printf("input not in the correct format.\n");

    return 0;
}

答案 1 :(得分:2)

您可以将输入转换为字符串。 e.g。

#include <stdio.h>
#define NUMBER_LEN 14 //the number of characters in the string (the phone number)

int main()
{
    char phone[NUMBER_LEN];
    printf("enter phone number[(xxx) xxx-xxxx]: ");
    gets(phone);
    printf("You entered %s", phone);
    return 0;
}

此外,您可以播放字符串并对其进行格式化。

答案 2 :(得分:-1)

使用scanf代替sscanf(&#34;%c&#34;,&amp; char);

答案 3 :(得分:-1)

#include<stdio.h>
#include<conio.h>

void main(){

  char phone[16];

  printf("Enter mobile number: ");

  scanf("%s",&phone);

  printf("Your Mobile Number is: %s",phone);

  getch();
}

答案 4 :(得分:-3)

int main(void)
{
    int a, b, c;
    printf("Enter phone number: [(xxx) xxx-xxxx]: ");   scanf("(%d)%d-%d", &a, &b, &c);
    printf("You entered: %d.%d.%d", a, b, c);
    return 0;

}