gpt4 book ai didi

c - fprintf 忽略 ^M 回车

转载 作者:行者123 更新时间:2023-11-30 15:34:29 26 4
gpt4 key购买 nike

我的 fopen 是这样设置的。我尝试过使用“t”和不使用“t”的 fopen。由于某种原因,我的 fprintf 打印出 ^M ,它们是回车符。如何阻止 frpintf 这样做?我想只使用普通的换行符。

FILE *outputfp;
// +5 to have space for .txt and terminator
char *fname = calloc(strlen(argv[1]) + 5, sizeof(fname[0]));
strcpy(fname, argv[1]);
strcat(fname, ".lst");
outputfp = fopen (fname, "w");
//printf("Above error message\n");
if (outputfp == NULL)
{
printf("Error while opening the file.\n");
return 1;
}
fprintf(outputfp, "hello\n");

http://en.wikipedia.org/wiki/Control_character http://www.pixhost.org/show/4770/21527928_cr.jpeg

我使用 Fedora,并使用 gcc 编译它

更新:

    if((int)line[0] == 46)
{
//printf("You have a period \n");
//printf("%s", line);
for(i = 0; i < 80; i++)
{
//fprintf(outputfp,"%c", line[i]);
if (isprint((unsigned char)line[i]) || isspace((unsigned char)line[i]))
{
printf("%c", line[i]);
//fprintf(outputfp, "\n Print something \n");
fprintf(outputfp,"%c", line[i]);
}

//printf("%c", line[i]);
//printf(" %d %c ", line[i], line[i]);
}
//fprintf(outputfp, "\n ");
//printf(" ------------------------\n");
memset(line, 0, 80);
comment_flag = 1;
}

//sscanf(line, "%s %s %x", label, mneumonic , &start_address);
//printf("start_address %d \n", start_address);
printf("%x %s %s %s %x\n", start_address, label, mneumonic, operand, start_address);
fprintf(outputfp, "%x %s %s %s %x\n", start_address, label, mneumonic, operand, start_address);

实际上看起来这是它不喜欢的行。我想在打印新行字符之前循环遍历整个数组。

fprintf(outputfp,"%c", line[i]);

更新:

char line[80] = {0};
while(fgets(line, 80, input) != NULL)

最佳答案

“t” 是默认值。如果您想要二进制模式,请使用 "wb" 打开。

文本流(默认)可以在磁盘文件和 C 程序看到的内容之间执行各种转换;二进制流意味着具有 1-1 字符映射(当然这都是实现定义的)。

更新:由于您在 Linux 中工作,因此文本或二进制模式可能没有问题。

根据您的输出屏幕截图,您似乎实际上在文件中写入了 \r 。第一行没有。如果您实际显示生成该输出的代码,将会有所帮助。也许您正在从具有 \r\n 行结尾的文件中读取这些行。

更新#2:事实证明,\r字符来自正在读入的文件,然后在通过过滤器后逐字输出if (isprint((unsigned char)line[i]) || isspace((unsigned char)line[i])).

isspace 函数允许遍历所有“\t\n\v\f\r”。您需要修改此检查;也许你也可以屏蔽 \r\f;或者,停止使用 isspace 并仅检查 ' ' '\t',然后恢复 "\n"的输出 循环之后。

关于c - fprintf 忽略 ^M 回车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23258142/

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