我正在编写一个程序,向用户提供表格(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
无法读取使用()
圆括号输入的数据。
答案 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;
}