所以我有一个问题。我必须分开电子邮件的名字,姓氏和主机名。 例如:
zephyr.extreme@gmail.com>>输入
输出=
名字= Zephyr
姓氏=极端
主机名= gmail.com
我没有得到理想的结果。我得到了一些奇怪的形状作为输出。
代码:
#include <stdio.h>
int main()
{
char email[40], first[20],last[20],host[30];
printf("Enter the email= ");
gets(email);
int i;
while(email[i]!='\0')
{
while(email[i]!='.')
{
first[i]=email[i];
i++;
}
while(email[i]!='@')
{
last[i]=email[i];
i++;
}
while(email[i]!='\0')
{
host[i]=email[i];
i++;
}
}
puts(first);
puts(last);
puts(host);
}
答案 0 :(得分:0)
所以我更新了代码,现在唯一的问题是最后的输出。
在主机名= gmail.com打印之后,然后还会打印一些额外的形状。这些是笑脸和一些奇怪的符号。
<强>代码强>:
#include <stdio.h>
int main()
{
char email[40], first[20],last[20],host[30];
printf("Enter the email= ");
gets(email);
int i=0,j;
while(email[i]!='.')
{
first[i]=email[i];
i++;
}
i=0;
while(email[i]!='@')
{
last[i]=email[i];
i++;
}
j=i;
i=0;
while(email[j]!='\0')
{
host[i]=email[j];
j++;
i++;
}
printf("First Name= ");
puts(first);
printf("Last name= ");
puts(last);
printf("Host name= ");
puts(host);
}
答案 1 :(得分:0)
C字符串('\0'
指针)应为null-terminated。这意味着您的字符串在其末尾需要一个puts
字符,以便字符串操作函数(如strlen
或puts
知道它们的结束位置,与其他语言相对应,其中字符串的长度存储在一起用它。您看到的“怪异形状”只是在字符串结尾被解释为字符后存储的随机数据。当你调用'\0'
时,它只是继续输出字节为字符,直到它随机找到一个值为'\0'
的字节
您可以通过在每个写入字符串的块之后的字符串末尾添加while(email[i]!='.')
{
first[i]=email[i];
i++;
}
email[i] = '\0'; //same thing as email[i] = 0; but using a char makes what
//you're doing clearer
字符来解决此问题。
val dynamoDbClient = AmazonDynamoDBAsyncClientBuilder
.standard()
.withRegion(Regions.US_EAST_1)
.build()
答案 2 :(得分:0)
假设格式始终为first.last@host ...,请使用以下代码:
.getTag()