我是新手,所有的帮助都会受到赞赏,即使它只是将我链接到另一个论坛。
我正在写一个非常基本的程序,我正在拿一个7位数的电话号码,并在例如之间放置一个“ - ”。 “1234567”至“123-4567”
我打算先查看用户的电话号码是否为7位数,如果没有,或者输入的数字以外还有其他字符我想显示“无效输入”并重新提问< / p>
感谢您的帮助!
#include <stdio.h>
int main()
{
char phoneNum[6];
printf("Enter your phone number\n: ");
scanf("%s", phoneNum);
printf("Your Phone Number: %.3s", phoneNum);
printf("-%.4s", phoneNum + 3);
return(0);
}
答案 0 :(得分:0)
要存储7个字符的字符串,字符数组大小必须至少为8才能存储7个字符,\0
字符用于标记字符串的结尾。
如果您打算将修改后的字符串与-
存储在同一个数组中,则大小必须至少为9.
char phoneNum[9];
用户可能输入超过7个字符会导致溢出。
尝试
scanf("%7s", phoneNum);
要查找字符串是否都是数字,请使用循环
for(i=0; phoneNum[i]!='\0'; ++i)
{
if(!isdigit(phoneNum[i]))
{
break;
}
}
if(phoneNum[i]!='\0')
{
printf("\nInvalid input.");
}
要查找字符串的长度,请使用strlen()
。
要在字符串的第3个索引处插入-
,您必须将所有索引从该索引转移到字符串的结尾(包括\0
字符)。
for(i=8; i>3; --i)
{
phoneNum[i]=phoneNum[i-1];
}
phoneNum[3]='-';
答案 1 :(得分:0)
我打算先查看用户的电话号码是否为7位数,如果没有,或者是否输入了除号码以外的任何其他字符。
避免使用for row in range(5):
print('\n' + '-'*50, end = "\n|")
for col in range(5):
print(' {:<5}{:<3}'.format(row, col), end = '|', sep="|")
print('\n' + '-'*50)
。它不会限制读取的数量,不会读取整个行(错过空格),并将行--------------------------------------------------
| 0 0 | 0 1 | 0 2 | 0 3 | 0 4 |
--------------------------------------------------
| 1 0 | 1 1 | 1 2 | 1 3 | 1 4 |
--------------------------------------------------
| 2 0 | 2 1 | 2 2 | 2 3 | 2 4 |
--------------------------------------------------
| 3 0 | 3 1 | 3 2 | 3 3 | 3 4 |
--------------------------------------------------
| 4 0 | 4 1 | 4 2 | 4 3 | 4 4 |
--------------------------------------------------
留在scanf("%s", phoneNum);
中。
为作业使用足够大的缓冲区。不需要小气。建议缓冲2倍预期需求。
'\n'