c - fprintf 语句在代码块中未正确执行

标签 c printf

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
   FILE *ptr;
   ptr=fopen("D:\\test.txt","w+");
   char a[5];
   char i='a',j='a',k='a',l='a';
   a[0]='l';
   a[1]='a';
   for(i='a';i<=121;i++)
   {
      a[2]=i;
      for(j='a';j<=121;j++)
      {
        a[3]=j;
        switch(j)
           case 'a':
           case 'e':
           case 'i':
           case 'o':
           case 'u': 
             for(k='a';k<=121;k++)
             {
               a[4]=k;
               for(l='a';l<=117;l++)
               {
                  switch(l)
                     case 'a':
                     case 'e':
                     case 'i':
                     case 'o':
                     case 'u':{a[5]=l;fprintf(ptr,"%s",a);}
               }
             }
      }
   }
   fclose(ptr);
   return 0;
}

这是完美运行的程序

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
main()
{
    char a[50],b[50];
    printf("Enter a name\n");
    gets(b);
    FILE *ptr;
    ptr=fopen("D:\\test.txt","w+");
    fprintf(ptr,"%s",b);
    rewind(ptr);
    fscanf(ptr,"%s",&a);
    printf("%s",a);
    fclose(ptr);
}

最佳答案

我整理了你的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {

      FILE *ptr = NULL;
      char a[7];

      /* Attempt to open the output file, and exit if something goes wrong. */
      ptr = fopen("D:\\test.txt", "w+");
      if (!ptr) { return 1; }  

      /* End the string with a NUL-terminator byte. */
      a[0] = 'l';
      a[1] = 'a';
      a[6] = 0;

      for (a[2] = 'a'; a[2] <= 121; a[2]++) {
            for (a[3] = 'a'; a[3] <= 121; a[3]++) {
                  switch (a[3]) {
                        case 'a': case 'e': case 'i': case 'o': case 'u':
                              for (a[4] = 'a'; a[4] <= 121; a[4]++) {
                                    for (a[5] = 'a'; a[5] <= 117; a[5]++) {
                                          switch (a[5]) {
                                                case 'a': case 'e': case 'i': case 'o': case 'u':
                                                      fprintf(ptr, "%s\n", a);
                                                break;
                                          }
                                    }
                              }
                        break;
                  }
            }
      }

      fclose(ptr);
      return 0;

}

我认为问题在于字符串 a 不包含零终止符字节,因此我添加了一个。您还应该确保在尝试写入文件之前已成功打开该文件,因此我也添加了这一点。代码中相关部分已进行注释。

我已经验证这一切都适用于 this .

关于c - fprintf 语句在代码块中未正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24429344/

相关文章:

c - 如何使用 1 个循环在 C 中打印等边三角形?

c - 浮点格式直到指定数字

c - 在 OS X 上列出和查找窗口

c - PIC18F67k40 UART 接收器部分工作正常但发送器部分不工作?

C 内联程序集生成未处理的异常

c - 将 Unicode/UTF8 字符添加到 C 中的 ncurses 显示

c - 为什么 float 会这样做?

c - C有字符串类型吗?

c++ - 如何识别最后一个变量参数?

c - 使用 C 编程在 CSV 文件中打印 a ,