用C语言将ASCII码转换为字符串
我试图创建一个基于单一ASCII码的字符数组。即使将“num”强制转换为char,以下代码也无法正确编译:用C语言将ASCII码转换为字符串,c,arrays,string,C,Arrays,String,我试图创建一个基于单一ASCII码的字符数组。即使将“num”强制转换为char,以下代码也无法正确编译: //Returns the ASCII counterpart of a number, such as 41 = A, 42 = B, 43 = C, etc. char numToASCII(int num) { char[] string = {(char)num, "\0"}; return string; } 对于给定的任务,“字符串”必须是字符数组/字符串,而
//Returns the ASCII counterpart of a number, such as 41 = A, 42 = B, 43 = C, etc.
char numToASCII(int num) {
char[] string = {(char)num, "\0"};
return string;
}
对于给定的任务,“字符串”必须是字符数组/字符串,而不是单个字符,这一点非常重要。任何帮助都将不胜感激。数组必须初始化为常量表达式,如果要返回数组,函数应该返回指针。 如果只想返回字符,请使用以下代码:
char numToASCII(int num) {
return (char)num;
}
如果要返回包含该字符的字符串,则应使用以下代码:
#include <stdlib.h>
char *numToASCII(int num) {
/*
* Use malloc to allocate an array in the heap, instead of using a
* local array. The memory space of local array will be freed after
* the invocation of numToASCII.
*/
char *string = malloc(2);
if (!string)
return 0;
string[0] = num;
string[1] = 0;
return string;
}
#包括
字符*numToASCII(整数){
/*
*使用malloc在堆中分配数组,而不是使用
*本地数组。本地数组的内存空间将在
*对numToASCII的调用。
*/
char*string=malloc(2);
如果(!字符串)
返回0;
字符串[0]=num;
字符串[1]=0;
返回字符串;
}
使用free()
函数释放由malloc()
分配的空间,尝试此操作。。
要查找ASCII代码的字符,请尝试以下代码:
#include<stdio.h>
int main()
{
int num;
printf("\nEnter ASCII Code Number:\t");
scanf("%d", &num);
printf("\nASCII Value of %d: \t%c", num, num);
printf("\n");
return 0;
}
#包括
int main()
{
int-num;
printf(“\n输入ASCII码:\t”);
scanf(“%d”和&num);
printf(“\n%d:\t%c”的nASCII值,num,num);
printf(“\n”);
返回0;
}
在此代码中,它将从用户处获取ASCII代码,并将打印ASCII代码的字符作为默认值。不确定这是否有帮助,但从文件中提取文本会返回为ASCII,我需要一个字符串,并通过检查字符串长度来绕过它,很抱歉,由于我也是非常新的,因此需要额外的步骤
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char firstbuff[yourchoice];
char secondbuff[yourchoice];
char sentence[yourchoice];
int stringlenght;
fp = fopen("test.txt", "r");
//Here add a means of counting the lines in the file as linecount
for(int j = 0; j < linecount; j++)
{
fgets(firstbuff; 1000; fp);
//get string length and use for loop to individually ascii copy as characters into array
stringlength = strlen(firstbuff);
for(int i = 0; i < stringlength; i++)
{
secondbuff[i] = (char)firstbuff[i];
}
//string concat
strcat(sentence, secondbuff);
}
printf("%s\n", sentence);
fclose(fp);
}
#包括
#包括
#包括
int main()
{
文件*fp;
char firstbuff[你的选择];
char secondbuff[你的选择];
char语句[你的选择];
内线长度;
fp=fopen(“test.txt”、“r”);
//这里添加一种将文件中的行计数为linecount的方法
对于(int j=0;j
你所做的几乎都能奏效。。。空终止符需要使用字符而不是字符串:我认为char[]string={(char)num,'\0'}代码>将编译…但不要返回,当您使用它时,它将超出范围,或者malloc某物,或者传入内存这三行代码有很多错误。无论如何,您不能从C中的函数返回数组。您可以将数组传递到函数中以保存字符串;你真的需要这个函数吗?用复合文字代替怎么样?谢谢你提供的信息,@DavidBowling。我不知道C函数不能返回数组。考虑到这一点,我将不得不使用复合文字。我不知道您在这里试图做什么,但您也可以使用snprintf()
或printf()
(如果您试图将其打印到stdout)。但仍然需要为字符串提供空间。类似于chars[2];snprintf(&s[0],sizeof(s),“%c”,num)代码>。另外,请注意,41不是“A”,0x41是“A”。-)现在你有一个内存泄漏。如果malloc()失败了怎么办?如果malloc(2)失败了,你需要去睡觉。。。今天不是你的日子。。您的程序即将崩溃或被OOM吃掉monster@GradyPlayer我们对这里的环境了解不多,但可能不是Linux。我见过一些没有MMU的系统,因此您甚至无法捕获对空指针的访问。我的观点不是繁重,只是要小心所做的假设。而且编写无错误代码非常困难。:-)<代码>strcat(句子,第二个buff)代码>失败,因为secondbuff
不是字符串(缺少指定的空字符)。