特定代码:C中的循环

特定代码:C中的循环,c,string,C,String,我的程序还远未完成,因为我是新手,希望在添加组件之前对所有内容进行测试。所以现在我想做一个加密程序,让用户在命令行输入一个密钥,并在启动程序后使用该密钥翻译他们输入的文本。我不是在比较变量。我现在要做的就是确保循环设置正确。我确实写了伪代码,但是程序还远没有完成,所以我意识到包含这些代码是不相关的。基本上,我现在遇到的问题是我有两个字符串,文本和键。我希望将每个字符串中的字符相互比较,如果文本字符不是字母顺序,则跳过比较。在这种情况下,程序应该打印文本char,然后在char为alpha时继续比

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

对不起,这么久了!我继续删除了库扩展,只知道有一个string.h来处理string和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;

请学习如何使用调试器。我在调试器中使用命令行执行,代码中没有任何错误。我认为我的问题是一个逻辑错误,所以我希望有一点方向。查找逻辑错误是源代码级调试器将帮助您解决的问题。或者将一些打印输出放到代码中,观察关键变量的变化,看看它们什么时候没有达到预期的效果。但这就是调试器的作用。你说程序没有打印,而你希望它打印一些东西。逐步浏览您的代码(看起来并不太复杂),您应该能够找到程序流和您的期望开始偏离的地方。我让顶层for循环对文本字符串进行迭代,内部for循环对键字符串进行迭代。这就是它打印不正确的原因,因为取决于我把printf语句放在哪里(在哪个循环中),它将决定如何打印。所以我的问题是,我能在同一个for循环中声明两个迭代吗?我知道我可以声明迭代变量,我还可以将另一个变量设置为字符串长度,然后在条件中使用该字符串长度。我可以在这里为两个字符串声明两个迭代吗?
   string Encrypt(void)
{
    printf("Enter your text.");
    string text = GetString();

    return text;
}