gpt4 book ai didi

c - 格式化和未格式化字符串 C

转载 作者:行者123 更新时间:2023-11-30 16:56:40 24 4
gpt4 key购买 nike

我有一个 char * temp_string 来保存这些字符:Hello\nWor'ld\\\042 包括 \0 在结束。

这是我制作字符串的方式:

char * addDataChunk(char * data,char c)
{
char * p;
if(data==NULL)
{
if(!(data=(char*)malloc(sizeof(char)*2))){
printf("malloc error\n");
throwInternError();
}
data[0]=c;
data[1]='\0';
return data;
}
else
{
if((p = (char*)realloc(data,((strlen(data)+2)*sizeof(char))))){
data = p;
}
else{
printf("realloc error\n");
throwInternError();
}
data[strlen(data)+1] = '\0';
data[strlen(data)] = c;
return data;
}
}

这就是我使用 addDataChunk 的方式:

temp_char =getc(pFile);
temp_string=addDataChunk(temp_string,temp_char);

当我执行这两行时:

printf("%s\n","Hello\nWor'ld\\\042");
printf("%s\n",temp_string);

我明白了:

Hello
Wor'ld\"
Hello\nWor'ld\\\042

有人知道为什么输出不同吗?

最佳答案

您的文本文件包含

Hello\nWor'ld\\042

现在,如果您使用 getc 逐个字符读取此文件,您将逐字获得字符,这意味着您将连续获得:

Hello\n、...、\\\ 042

另一方面,string literal “Hello\nWor'ld\\\042”将被编译器转换为:

Hello\n,...,\"

实际上\n会被翻译成ASCII字符10(换行),\\会被翻译成\\042 将被转换为八进制值为 042 的 ASCII 字符,即 "

您应该阅读 escape sequences .

关于c - 格式化和未格式化字符串 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39851594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com