用C语言将ASCII码转换为字符串

用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; } 对于给定的任务,“字符串”必须是字符数组/字符串,而

我试图创建一个基于单一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;
}

对于给定的任务,“字符串”必须是字符数组/字符串,而不是单个字符,这一点非常重要。任何帮助都将不胜感激。

数组必须初始化为常量表达式,如果要返回数组,函数应该返回指针。 如果只想返回字符,请使用以下代码:

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
不是字符串(缺少指定的空字符)。