如何解决fprintf函数无法正常工作无法写入文件
大家好,我在做噩梦时试图弄清楚fprintf()
函数为什么没有将字符串写入文件。
我要说的是,我95%确信问题出在代码示例的突出显示行上,因为当我在控制台(使用printf()
)上打印完全相同的内容时,确实在打印我需要的字符串。
for (int i = 1; i <= nmappers; i++)
{
if (fork() == 0) //SI ENTRA A ESTE IF
{
sprintf(nombreArchivo,"split%d",i);
ptrLectura = fopen(nombreArchivo,"r");
sprintf(nombreArchivo,"buf%d",i);
ptrEscritura = fopen(nombreArchivo,"w");
while ((caracter = fgetc(ptrLectura)) != EOF)
{
if (caracter != ' ' && caracter != '\n' && !encontroCadena)
{
printf("111\n");
strncat(cadena,&caracter,1); //Pa que sirva toca con &
ncol++;
encontroCadena = true;
}
else if (caracter != ' ' && caracter != '\n' && encontroCadena)
{
printf("222\n");
strncat(cadena,1); //Pa que sirva toca con &
}
else if (caracter == ' ')
{
printf("333\n");
encontroCadena = false;
}
if (caracter == '\n')
{
printf("%s\n",cadena);
printf("444\n");
fprintf(ptrEscritura,"%s",cadena); //PROBLEM'S PROBABLY HERE
ncol = 0;
}
}
fflush(ptrEscritura);
fclose(ptrLectura);
fclose(ptrEscritura);
exit(0);
}
}
PS:我要写入字符串的文件正在成功创建,但是fprintf()
函数无法正常工作!另外,我也尝试过将其更改为fputs()
,但都没有效果。
非常感谢您能为我提供的帮助!
解决方法
有两个可能的原因。if(caracter == '\n') { ... fprintf(ptrEscritura,"%s",cadena); //PROBLEM'S PROBABLY HERE ... }
- 如果条件不匹配(字符不等于'\ n'),则不会调用fprintf函数。
- cadena是空的。
如果您测试哪个发生错误,请执行以下操作:
- fprintf(ptrEscritura,“%s”,“ abc”); //如果此处显示abc,则2号错误)。
- 检查cadena [0] == 0。
很高兴能为您提供帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。