Так что я печатаю символ в файл, и всякий раз, когда заканчивается строка, он просто делает что-то странное.Печать символа в файл дает странный результат
Это код, я использую:
void opdracht43() {
FILE *file;
FILE *file2;
file = fopen("opdracht1.1.cpp", "r");
file2 = fopen("Disc.c", "w");
int p;
char a[100];
while (fgets(a, 100, file)) {
for (int i = 0; i < sizeof a; i++) {
if (a[i] == '\n' || a[i] == ' ' || a[i] == '\t') {
printf("TRUE");
}
else {
printf("FALSE");
fputc(a[i], file2);
}
}
return 0; //So it only prints the 1st line for now.
}
fclose(file);
fclose(file2);
}
И когда это работает, это текст дает:
#include<stdio.h> ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ
Пространство между> и я дает мне странный черный NUL в Notepad ++
Первая строка файла:
#include<stdio.h>
Я надеюсь, что смогу найти помощь здесь :)
Вы являетесь всегда пытается вывести 100 байт (пропускать пробелы). Но вы должны выйти из цикла for, когда на входе встречается '\ 0', поскольку это означает конец чтения' fgets'. В противном случае вы выводите прошлые действительные данные ввода и, следовательно, мусор. – kaylum
, расширяющий комментарий @kaylum, 'i
' for (int i = 0; i' for (size_t i = 0; a [i]; i ++) {' –
chux