小编Wan*_*rer的帖子

fopen没有错误,但文件保持空白

我在写一个文件时遇到了麻烦,但问题很奇怪,我甚至不知道我应该要求什么.

起初:我使用C,我被迫保持同意89/90-standard与gcc一起编译.我的操作系统是Windows 7 Home Premium,64位.

我想要做的是打开三个文件流,如下所示:

FILE *A=fopen("A.txt", "r");
FILE *B=fopen("B.txt", "w");
FILE *D=fopen("C.txt", "w");
Run Code Online (Sandbox Code Playgroud)

第一个只读,另外两个写.在程序期间,我写了

fprintf(B, "%c", letter);
fprintf(D, "%c", letter);
Run Code Online (Sandbox Code Playgroud)

整数,解释为ASCII-charachters到文件中.我之前做过二十次,总是有效.现在,"D"文件保持为空.如果我将流的顺序更改为:

FILE *A=fopen("A.txt", "r");
FILE *D=fopen("C.txt", "w");
FILE *B=fopen("B.txt", "w");
Run Code Online (Sandbox Code Playgroud)

我的文件"B"保持空白!因此,最后打开的一个不起作用.但为什么?!我看不出其他正在运行的程序有什么不同,这个程序也可以工作,除了第三个文件流的情况.我正在使用-Wall和-pedantic编译,编译器没有抱怨,程序不会崩溃,一切正常但第三流!

有没有人有任何想法,甚至更好的经历这样的问题?我试了大约一个小时没有得到任何线索.


编辑:感谢您的意见!我用C编程大约两个月到现在,所以有很多东西,我不太确定.

@ Mhd.Tahawi:是的,现在我做了,但没有区别.

@Kninnug:文件成功打开.

@Bit Fiddling Code Monkey:是的,据我所知,某处存在限制.但是我在一周前的同一时间使用了6个文件流,一切都很好.

@Pandrei:是的,另一个文件中的输出很好.

@Martin James:我不确定你的意思.如果你的意思是fclose或类似的东西:既然你们这么多人问过我,我试过了,但是没有区别.

@hmjd:'letter'是一个整数,通过fgetc(A)得到它的值;

@squeamish ossifrage:我通过签名打印到每个文件中获得'1',似乎没问题.


编辑2:现在,这很好,我正面对某种海森堡.我打算检查返回值,正如你们许多人告诉我的那样.

所以我初始化了一个新的int retval = 0; 并写道:

letter=fgtec(A);
while (letter!=EOF)
{
    retval=fprintf(B, "%c", letter);
    printf("%d", retval); /*Want to see the return values on stdout*/
    if (retval<0) /*If writing fails, the program stops*/
    { …
Run Code Online (Sandbox Code Playgroud)

c fopen filestream

3
推荐指数
1
解决办法
2659
查看次数

java - 字符串中的换行符检测

我知道类似的问题已经被问过好几次了,但我看到的答案要么是解决方法,要么根本就是错误的。

基本问题相当简单:一个方法给我一个从文件中读取的字符串,我需要检查该字符串是否包含换行符。

现在到棘手的部分:维基百科当前列出了八种类型的字符或字符组合,根据系统的不同,它们可能表示换行符。因此,检查我经常读到的常见答案\n和\r并不是正确的方法。遍历字符串并将其字符与 进行比较System.getProperty("line.separator")也可能会失败,因为可能的换行符表示形式是“\r\n”,这将触发此比较两次,尽管它只有一个换行符。

然而,这必须是可能的。我缺少什么选择?

java string newline

3
推荐指数
1
解决办法
4814
查看次数

标签 统计

c ×1

filestream ×1

fopen ×1

java ×1

newline ×1

string ×1