#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv){
FILE *fp;
if((fp=fopen("Example.txt", "r"))== NULL){
printf("Errore apertura file");
exit(0);
}
char s[50];
int i=0;
while(!feof(fp)){
if(!feof(fp)){
s[i++]=fgetc(fp);
}
}
s[i]='\0';
fclose(fp);
char nome[20];
printf("Inserisci il nome che vuoi dare al file di uscita\n");
//fgets(nome,20,stdin);
scanf("%s",& nome);
char tipo[5]=".txt";
strcat(nome,tipo);
if((fp=fopen(nome,"w"))== NULL){
printf("Errore apertura file");
exit(0);
}
fputs(s, fp);
fclose(fp);
return 0;
}
文字列の出力ファイルにも異常文字が印刷されていますが、どうやって見えませんか? 出力は "string" + "ÿ"です 問題は出力ファイルでのみ発生し、キャプチャでは発生しません。ファイル出力に最後の文字を見たくない
'scanf("%s "、nome);' –
と 'feof'は決して使用しません。常に 'EOF'を手動でチェックしてください。 –
なぜ 'feof()を使用するのかについての議論については、' 'while(!feof(file))'は常に間違っています。](http://stackoverflow.com/questions/5431941/while-feof-file-is-always-wrong) () 'が間違っています。あなたが見ているのは、コードポイント0xFFがU + 00FF、LATIN LOWER CASE LETTER YがDIAERESIS(ÿ)のCP1252やISO 8859-1などのコードセットの通常の動作です。 'fgetc(fp)'の結果を 'char'に代入してはいけません。文字として使用する前に、 'int'値がEOFであるかどうかをチェックする必要があります。 –