C:将参数传递给Program以将字符转换为ASCII值

时间:2015-09-20 20:53:59

标签: c arrays pointers ascii

我正在编写一个程序,它接受命令行参数和用户输入,并计算两个字符之间的差异(加密)。我想将我的参数传递给程序中的变量,但我无法这样做。

#include <stdio.h>

int main(int argc, char** argv) {

char plain[2];
char cipher[2];   /*locations of plain and cipher text*/

char *ppoint; /*pointers to plain and cipher*/
char *cpoint;

scanf("%s",plain);
*ppoint=plain[0];     /* ppoint points to 1st character in plain*/

cipher=argv[1];  /* cpoint points to first argument character*/
*cpoint=cipher[1];

printf("%s %d \n",ppoint,plain);
printf("%s %d \n",cpoint,cipher);

return 0;



}

对于第14行,我遇到编译错误, (cipher = argv [1];)&#34;分配中的不兼容类型&#34; 我一直在尝试许多方法,例如类型转换,但我无法工作。

我希望程序的最后两行输出实际字符及其各自的ASCII值。请帮助我过去这个街区!

更新:

#include <stdio.h>
#include <string.h>

int main(int argc, char** argv) {

char plain;
char *cipher;   /*locations of plain and cipher text*/

int *ppoint; /*pointers to plain and cipher*/
int *cpoint;

scanf("%s",plain);
*ppoint=(int) plain;     /* ppoint points to 1st character in plain*/

cipher=argv[1];  /* cpoint points to first argument character*/
*cpoint=(int) cipher;

printf("%s %d \n",plain);
printf("%s %d \n",cipher);

return 0;

    }

我使用类型转换来修复任何编译器错误。但是,在运行程序并为“简单”设置值时,我遇到了分段错误。我看起来很长很难,但看不到这个内存错误发生的地方。请帮忙。

2 个答案:

答案 0 :(得分:0)

您正在尝试为char数组分配char指针,这是不允许的。你需要以其他方式复制参数。例如,您可以使用strcpy:

strcpy(cipher,argv[1]);

或者,如果您从未对其进行修改,则可以将cipher设为char指针。

const char *cipher;

...

cipher = argv[1];

答案 1 :(得分:0)

尝试使用,

ppoint=(int) plain;     /* ppoint points to 1st character in plain*/

没有'*',因为你不能在指针变量上使用解引用运算符,因为指针还没有指向任何位置。