c - 我如何循环遍历字符串中的每个字母?

标签 c string ascii

#include <stdio.h>

int main()

#include <stdio.h>

int main()

{
    char msg[31] = {'\0'};
    char encrypted[31] = {'\0'};
    int key;


    printf("Please enter a message under 30 characters: ");
    fgets(msg, 31, stdin);

    printf("Please enter an encryption key: ");
    scanf("%d", &key);

    int i = 0;

    while (msg[i] && ('a' <= msg[i] <= 'z' || 'A' < msg[i] < 'Z'))
{
    encrypted[i] = (msg[i] + key);
    i++;
}

    printf("%s\n", msg);
    printf("%d\n", key);
    printf("%s\n", encrypted);

}

好的,我已经得到了增加字符的代码,但我不知道如何让它忽略特殊字符和空格。另外,我如何使用 % 循环回到 'a''A'

谢谢。

最佳答案

  1. 您只需要一个简单的for 循环:

    for (int i = 0; i < 31; i++)
    {
        // operate on msg[i]
    }
    

    如果您不知道字符串的开头长度,您可能更喜欢检测空终止符的 while 循环:

    int i = 0;
    while (msg[i])
    {
        // operate on msg[i]
        i++;
    }
    
  2. 您的 fgetsscanf 可能没问题,但就个人而言,我会在读取输入时保持一致,而 fgets全部。然后您可以 sscanf 稍后获取 key

关于c - 我如何循环遍历字符串中的每个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572423/

相关文章:

java - 如何删除所有扩展 ASCII 字符,但不删除变音符号?

C语言: How to use memset to reset dynamic 2d array?

C 中的命令行参数和读取文件/打印文本

c - 输出正确的单词

c# - 使用C#在字符串中的适当位置插入特殊字符

c++ - 如何在 C++ 中读取一个字节并将字节的 ASCII 值保存为整数

c - 如何检查 C 中指定小数位的准确性

c - 当你给一个 C 标准函数一个空字符串时会发生什么?

java - 为什么在java String构造函数的实现中可以直接引用另一个字符串的私有(private)属性

.net - 手动在ASCII和.NET字符之间转换