C fprintf()函数不工作(未写入文件)
大家好,我正在做一个噩梦,试图找出为什么C fprintf()函数不工作(未写入文件),c,file,printf,fork,file-writing,C,File,Printf,Fork,File Writing,大家好,我正在做一个噩梦,试图找出为什么fprintf()函数没有将字符串写入文件 我想说,我95%确定问题出在代码示例中突出显示的行上,因为当我将完全相同的内容打印到控制台(使用printf())时,实际上正在打印我需要的字符串 for (int i = 1; i <= nmappers; i++) { if (fork() == 0) //SI ENTRA A ESTE IF { sprintf(nombreArchivo, "split%d&
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, &caracter, 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);
}
}
对于(int i=1;i有两个原因。如果(caracter='\n'){…fprintf(ptrEscritura,“%s”,cadena);//问题可能在这里…}
如果条件不匹配(字符不等于“\n”),则不会调用fprintf函数
卡德纳是空的
如果您测试发生错误,请执行以下操作:
- fprintf(ptrEscritura,“%s”,“abc”);//如果此处打印abc,则数字2中存在错误)
- 检查cadena[0]==0
如果对你有帮助,我很高兴。这个fork()
立刻让我怀疑起来。那些fprintf
调用的返回值是什么?这可能是跨进程使用FILE*
的副产品。如果每个进程都打开了自己的句柄,那么它可能会工作得更好。您是否尝试过在调试器中逐行运行代码,同时监视所有变量的值,以确定程序在哪一点停止按预期运行?如果未尝试此操作,则可能需要阅读此内容:您可能还需要阅读此内容:。是否确定内存缓冲区cadena
有足够的空间用于strncat
调用?@tadman fprintf()函数只返回正值