【发布时间】:2014-05-21 13:16:27
【问题描述】:
我需要我的程序将整个字符串附加到我的文件中。我的代码如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char nazivDatoteke[128];
printf("Unesite naziv datoteke koja ce se kreirati: ");
scanf("%123s",nazivDatoteke);
FILE *pokDatTestna = NULL;
FILE *pokDatZavrsna = NULL;
char nazDatZavrsna[] = "zavrsna.txt";
char linija[100+1];
char tekst[128];
pokDatTestna = fopen(nazivDatoteke, "a");
pokDatZavrsna = fopen(nazDatZavrsna, "a");
if(pokDatTestna == NULL || pokDatZavrsna == NULL)
{
printf("Datoteke nije moguce otvoriti!");
exit(EXIT_FAILURE);
}
do{
printf("Unesite recenicu koja ce se upisati u datoteku: ");
scanf("%s", tekst);
if (strcmp("KRAJ",tekst) != 0){
fprintf(pokDatTestna, "%s\n", tekst);
}
}while(strcmp("KRAJ",tekst) != 0);
fclose(pokDatTestna);
pokDatTestna = fopen(nazivDatoteke, "r");
while(fscanf(pokDatTestna, "%100[^\n]%*c", linija) >= 0)
{
fprintf(pokDatZavrsna, "%s\n", linija);
}
fclose(pokDatTestna);
fclose(pokDatZavrsna);
return 0;
}
这有效,但不适用于附加完整字符串。它分别附加它们。所以如果我输入“this is a test sentence”,文件会显示:
this
is
a
test
sentence
当我尝试在 scanf 中使用 fgets 或 "%[^\n]" 时,它陷入了无限循环并在文件中附加了空格。我不知道我做错了什么,因为它适用于 scanf,但是一旦我使用一种直到换行才停止扫描的方法,程序就会表现得很奇怪。
【问题讨论】:
-
不要使用
scanf,使用fgets。 -
我试过了,但对我的情况没有帮助。
-
你一定是在滥用
fgets。在其他地方,here 是正确使用的一个例子。 -
哪个文件有问题?