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()函数只返回正值