代码不打印数组中的字符

时间:2019-02-20 21:05:28

标签: c arrays regex printing character

我一直在尝试解决一种基本验证给定电子邮件的简单算法。因此,如果有一个“。”或本地名称中的“ +”,则应该没问题,如果有“。”或域名中的“ +”(也就是“ @”之后的域名),则无效。

现在,我知道我的方法效率不高,远非如此。但是我现在只想解决问题。由于某些原因,当我有以下代码时,将打印出newArr中的字符:

#include <stdio.h> 
#include <string.h>

int main() {
  char email[30] = "DanGitson@gmail.com";
  char newArr[30];
  int at = 0;
  for (int i = 0; i < 30; i++) {
    // get the characters after '@'
    if (at == 1) {
      newArr[i] = email[i];
      printf("%c", newArr[i]);
    }
    // if email[i] is equal to '@'
    if(email[i] == 64){
      at = 1;
    }
  }
}

但是当我有以下代码时,它们却不是:

#include <stdio.h> 
#include <string.h>

int main() {
  char email[30] = "DanGitson@gmail.com";
  char newArr[30];
  int at = 0;
  for (int i = 0; i < 30; i++) {
    // get the characters after '@'
    if (at == 1) {
      newArr[i] = email[i];
    }
    // if email[i] is equal to '@'
    if(email[i] == 64){
      at = 1;
    }
  }
  for (int j = 0; j < 30; j++) {
    printf("%c", newArr[j]);
  }
}

基本上,我的方法是在'@'字符之后添加所有字符。换句话说,获取域并检查是否存在超过2个“。”以及是否存在“ +”,以便我可以验证电子邮件是否有效。 另外,如果您对我的方法有任何建议或反馈,我将不胜感激。

感谢您到目前为止阅读本文,我正在等待您的回复!

0 个答案:

没有答案