C语言一个把字符串转换成ASCILL码的程序

2025-02-25 16:21:23
推荐回答(4个)
回答1:

你的程序虽然不长但是错误真不少:
#include
int main()
{ char c[500];
scanf("%s",c);
int i = 0;
do{ printf("%x",c[i]); i++; } while(c[i] == "/0"); /*是\0,不是/0,是单撇号'',不是双撇号" " */
printf("%d",/n); /*这/n是要换行?换行符是\n而且是放在双撇号里面的*/
return 0;
}

修改一下:

#include
int main()
{
char c[20];
int i=0;
scanf("%s",c);

for(;c[i]!='\0';i++)
{
printf("%x ",c[i]);
}
return 0;
}
运行正常

回答2:

可以直接使用类型转换函数:
1. int atoi(const char *s) 将字符串转换成int
2. long atol(const char *s) 将字符串转换成long
3. float atof(const char *s) 将字符串转换成float
再在printf输出格式制定十六进制就OK了,省事!

回答3:

那肯定啦, 你如果想动态的的指定大小就要用malloc/new和free/delete
#include
#include

int main()
{
char c[500];
memset(c, '\0', 500);
scanf("%s",c);
int i = 0;
do{
printf("%x\n",c[i]);
i++;
}while(c[i] != '\0');
getchar();
return 0;
}

动态分配大小如下:
#include
#include

int main()
{
int nSize = 500;
char *p;

printf("请输入字串长度值:");
scanf("%d", &nSize);

p = new char[nSize];
memset(p, '\0', nSize);

printf("请输入字串:");
scanf("%s",p);

int i = 0;
do{
printf("%x\n",p[i]);
i++;
}while(p[i] != '\0');
delete []p;

getchar();
return 0;
}
以上都调试通过

回答4:

数组铁定要指定大小。除非这样的char s[]="abc";
#include int main(){ char c[500]; scanf("%s",c); int i = 0; do{ printf("%x",c[i]); i++; } while(c[i] == "/0"); printf("\n"); return 0; }