Я написал эту простую программу для назначения, но когда я ввожу свой текст, вывод дает мне символы вместо символов. любая помощь будет оценена по достоинству. Я не знаю, почему мой вывод появляется таким образом, но программа, похоже, компилируется в порядке. Возможно, он работает, и мне нужно просто провести базовый тест с математикой, чтобы убедиться, что он работает правильно. В любом случае, если кто-либо видит ошибки в этом, отзывы очень ценятся.Символы ASCII, пропущенные в простой программе C
#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>
#include <ctype.h>
string Crypto(string, int); // rotation
int main(int argc, string argv[])
{
int k = 0;
// error checing
if (argc == 0 || argc == 1 || argc > 2)
{
// get mad
printf("Enter 1 integer as an argument. Stop messing around!\n Try Again: ");
return 1;
}
else
{
//create command line arguments to be stored into k
k = atoi(argv[1]);
k = k * 1;
}
// Get text to be encrypted
printf("Enter the text you want to encrypt: \n");
string a = GetString();
string b = Crypto(a, k);
printf("%s\n", b);
return 0;
}
//Now let's get cryptic
string
Crypto(string a, int k)
{
int c = 0;
for (int i = 0, n = strlen(a); i < n; i++)
{
if(a[i] >= 65 && a[i] <= 90)
{
c = ((26 - (91 - a[i] + k) % 26));
a[i] = c + 'A';
}
else
{
c = ((26 - (123 - a[i] + k % 26)));
a[i] = c + 'a';
}
}
return a;
}
Pranav получил меня на правильном пути. Мне нужна была строка [strlen (a) + i + 1] = '\ 0'; – cbanowsky
Наблюдение: 'argc' является правильным, если оно равно 2, которое наиболее просто и точно написано как' if (argc! = 2) '(а не' if (argc == 0 || argc == 1 || argc> 2) '). –