好的。因此,我正在从文本文件中读取文本并将其存储到char数组中,这按预期工作。但是,文本文件包含许多换行符转义序列。然后的问题是,当我用存储的文本打印出字符串数组时,它会忽略这些换行符序列,而只是将它们打印为“ \ n”。
这是我的代码:
char *strings[100];
void readAndStore(FILE *file) {
int count = 0;
char buffer[250];
while(!feof(file)) {
char *readLine = fgets(buffer, sizeof(buffer), file);
if(readLine) {
strings[count] = malloc(sizeof(buffer));
strcpy(strings[count], buffer);
++count;
}
}
}
int main() {
FILE *file1 = fopen("txts", "r");
readAndStore(&*file1);
printf("%s\n", strings[0]);
printf("%s\n", strings[1]);
return 0;
}
输出结果如下所示:
\ n这里有很多文字\ n应该在换行符上显示更多文字,但不是\ n等等\ n和\ n
有什么方法可以让它读取“ \ n”作为实际的换行符转义序列,还是我只需要从文本文件中删除它们并找出其他方法来隔开文本?
事实是这样,\n
对于您的编译器来说,这是一个特殊的转义序列,它将其转换为具有ASCII码的单个字符文字,即“ LF”(换行,返回)0x0A
。因此,正是编译器赋予了该序列特殊的含义。
相反,从文件\n
读取时,将被读取为两个不同的字符ASCII码0x5c,0x6e
。
您将需要编写一个例程,将所有出现的\\n
(由字符\和n组成的字符串,必须使用两次转义以告诉编译器不要将其解释为转义序列)替换为\n
(单个转义序列,这意味着换行) )。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句