具体代码:在C中循环

时间:2014-03-16 14:22:57

标签: c string

我的程序远未完成,因为我是新手,并希望在添加组件之前测试所有内容。所以现在我想做一个加密程序,让用户在命令行输入一个键,并使用键来翻译他们在启动程序后输入的文本。我不是要完全比较变量的部分。我现在要做的就是确保我正确设置了循环。我确实写过伪代码,但程序远未完成,所以我意识到包含这个是无关紧要的。基本上,我现在遇到的问题是我有两个字符串,文本和键。我想比较每个字符串中的字符,并且如果文本字符不是字母,则跳过比较。在这种情况下,程序应该打印文本char,然后在char为alpha时继续比较。这很好。当char是alpha时,程序使用两个for循环来比较text char和key char。现在我只想确保它在继续程序之前工作,所以我让循环打印出数组中的字符;但事实并非如此。它就像一个循环应该工作,而不是正确地输出数据。如果我使用文本迭代将print语句移动到最外层的循环,程序只会在key和所有文本字符中打印最终的char,但如果它在最里面的循环中,它会在文本中打出第一个char,其中chars为key并经历这一直到文本字符结束。我知道这是一个循环问题,但我现在有点不知所措,因为这件事情有点复杂。我最终会把函数放到程序中,(因为我现在有一个非常简单/弱的函数)但是我真的很新,并希望在我做一些更复杂的事情之前确保有效。

对不起,这太久了!我继续删除了库扩展,只知道有一个string.h来处理字符串和GetString函数。

string Encrypt(void); 

int main(int argc, string argv[])
 {
      //Exits with improper arguement count
      if (argc!=2)
         {
             printf("You must enter one keyword when running the program.\n");
             return 1;
         }
//Sets k to key entered for command argument 1
 string key = argv[1]; 

 //Checks key to make sure a-z is entered. Exits if not. 
for (int i=0, word=strlen(key); i<word; i++)
{
 if (isalpha(key[i]))
     {
     }
     else 
     {

         printf("Only letters are allowed for the key.\n");
         return 1; 
     } 

 }
string text = Encrypt();


 //begin loop for string compare
 if (text !=NULL)
 {

     for (int i=0, l=strlen(text); i<l; i++)
         {
            if (isalpha(text[i]))
            {
            char c=text[i];
            char t='b';


                for(int j=0, m=strlen(key); j<m; j++)
                {
                 t=key[j];
                printf("%c", t);
                }
                printf("%c", c);

            }              
            else
            {
            printf("%c", text[i]);
            }
         }
  }
return 0;

}

   string Encrypt(void)
{
    printf("Enter your text.");
    string text = GetString();

    return text;
}

0 个答案:

没有答案