#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
char key, vector;
char plainText[101];
char cipher;
int i, cipherValue;
int keyLength, IVLength;
scanf("%s", key);
scanf("%s", vector);
return 0;
}
输入scanf
部分的值后,我的程序崩溃了。我不明白为什么。
答案 0 :(得分:1)
的问题
scanf("%s", key);
scanf("%s", vector);
是:
key
和vector
属于char
类型,不是指向char
的指针。只能容纳一个字符。 1 %s
scanf
需要指向char
的指针。就像现在一样,你
正在传递未初始化的整数值,就好像它是指针一样
未定义的行为和您的程序因此而崩溃。编译器
一定要给你一个警告,不要忽略编译器的警告,
他们在那里帮助你,而不是惹恼你。正确的版本:
char key[101], vector[101];
...
scanf("%s", key);
scanf("%s", vector);
// or to limit the number of bytes
// written in the buffer, as pointed out
// in the comments by user viraptor
scanf("%100s", key);
scanf("%100s", vector);
有关scanf
的详情,请参阅the documentation
<强>脚注强>
1 C中的字符串是以字符串结尾的字符序列
'\0'
- 终止字节。具有单个字符的字符串需要char
数组
尺寸2或更大。通常,char
维{@ 1}}数组可以存储
最大长度为n
的字符串。你必须在传球时记住这一点
指向n-1
指向函数的指针。指向单个的指针
char
会导致未定义的行为,因为它会溢出。