我在这里遇到了一个很奇怪的问题。我正在使用fopen和fprintf将句子写到文件中:

#include <stdio.h>
#include <stdbool.h>
#include <math.h>
#include <string.h>

int main (void) {
    FILE *fp;
    fp = fopen("wageData.txt","w");
    fprintf(fp, "Hi, I like pie");
    return 0;
}


但是,当我在桌面上打开payData.txt时,绝对没有任何内容。另一方面,如果尝试读取文件,则会得到以下信息:

#include <stdio.h>

int main (void) {
    //FILE *fp;
    //fp = fopen("wageData.txt","r+");
    FILE *c;
    if ((c = fopen("wageData.txt","r")) == NULL)
        printf("File not available");
    else {
        char x[3][6];
        int i = 0;

        while (fgets(x[i], 30, c) != NULL) {
            i++;
        }

        for (i = 0; i < 6; i++) {
            printf("%s\n", x[i]);
        }
    }

    return 0;
}


编译后,结果为:

Hi, I like pie
like pie
ie
[?
 m?iՖ

logout

[Process completed]


有人可以告诉我这是怎么回事吗?提前致谢。

最佳答案

在读取文件时,您可以执行以下操作-

   if ((fp = fopen("wageData.txt","r")) == NULL)
              printf("File not available");
   else {
             char x[100];
             //int i = 0;
             while (fgets(x,100, fp) != NULL)
              {
                     printf("%s\n", x);
              }
       }
  fclose(fp);


然后,如果您想用多个字符串来打断句子,可以使用sscanf-http://www.tutorialspoint.com/c_standard_library/c_function_sscanf.htm

07-24 09:46
查看更多