输入明文字符串为空时输出null c语言编写
时间: 2024-09-20 18:05:54 浏览: 38
在C语言中,当处理输入明文字符串且需要检查其是否为空时,通常我们会先读取用户输入,并将其转换为字符数组。如果输入为空,或者遇到结束符'\0',则可以认为字符串为空。下面是一个简单的示例,展示了如何在函数中实现这个功能:
```c
#include <stdio.h>
#include <string.h>
char* get_input() {
char input[50]; // 假设我们最多允许50个字符的输入
fgets(input, sizeof(input), stdin); // 从标准输入读取
// 检查是否输入了内容并且不是换行符
if (input[0] == '\0' || input[0] == '\n') {
return NULL; // 如果输入为空或只有换行符,返回NULL表示空字符串
}
// 移除可能存在的换行符
input[strcspn(input, "\n")] = '\0';
return input;
}
int main() {
char* str = get_input();
if (str == NULL) {
printf("输入的字符串为空。\n");
} else {
printf("输入的字符串是:%s\n", str);
}
free(str); // 释放内存
return 0;
}
相关问题
如何使用C语言编写一个简单的程序,实现凯撒密码加密算法,并规定特定的替代规则(将明文中的第三位字母替换为其他字符)?程序应允许用户输入任意明文字符串。
在C语言中,你可以创建一个简单的凯撒密码加密程序,只针对明文中的第三位字母进行替换。这里是一个基础示例:
首先,我们需要一个字符数组来存储加密规则,例如将第三位字母替换为'*'或其他字符。假设我们选择'*'作为替换字符:
```c
#include <stdio.h>
#include <string.h>
// 定义加密规则,这里仅替换第三位字符
const char encryption_rule[] = {'*', '*', '*', ... , '*', '*'};
int main() {
char plaintext[100];
printf("请输入明文: ");
fgets(plaintext, sizeof(plaintext), stdin); // 调整fgets大小以防止溢出
plaintext[strcspn(plaintext, "\n")] = '\0'; // 移除末尾的换行符
// 分割字符串以便操作单个字符
char* parts[3] = { strtok(plaintext, " "), strtok(NULL, " ") };
// 只处理前两个部分,因为我们要替换的是第三个字符
char third_char = parts[1][2]; // 获取原始明文中第三位字符
parts[1][2] = encryption_rule[third_char - 'a']; // 替换为加密规则对应的字符
printf("加密后的文本: ");
printf("%s %s", parts[0], parts[1]);
return 0;
}
```
写一个加密程序,对文件1.txt进行加密。它从输入流中读入一个密钥,并将文件密文输出。采用下面的简单加密算法: 1)读入密钥的key是一个字符串; 2)明文中字符c的密文为c^key[i]; 3)循环使用key中的各个字符,直至处理完全部明文。如果key为空,则不作加密 4)解密时,用同一个key重新加密密文,就可以得到明文。 c语言代码
好的,这是一个简单的加密程序的C语言代码,可以对文件进行加密:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_KEY_LEN 100
int main(void) {
FILE *fp_in, *fp_out;
char key[MAX_KEY_LEN + 1];
int key_len, key_index = 0;
int c;
// 打开输入文件
fp_in = fopen("1.txt", "r");
if (fp_in == NULL) {
fprintf(stderr, "Error: cannot open input file\n");
return 1;
}
// 打开输出文件
fp_out = fopen("1_encrypted.txt", "w");
if (fp_out == NULL) {
fprintf(stderr, "Error: cannot open output file\n");
fclose(fp_in);
return 1;
}
// 读入密钥
printf("Please enter the encryption key: ");
scanf("%s", key);
key_len = strlen(key);
// 逐字符加密并输出密文
while ((c = fgetc(fp_in)) != EOF) {
if (key_len > 0) {
c ^= key[key_index++ % key_len];
}
fputc(c, fp_out);
}
// 关闭文件
fclose(fp_in);
fclose(fp_out);
printf("Encryption successful.\n");
return 0;
}
```
该程序首先打开输入文件 `1.txt` 和输出文件 `1_encrypted.txt`,然后读入密钥并计算密钥长度。随后,它逐字符读入输入文件中的明文,对每个字符执行简单异或加密算法,并将密文输出到输出文件中。最后,程序关闭文件并输出加密成功的消息。
阅读全文