Не работает код, написанный на Си
#define MAX_LEN 80
void main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
FILE* fin = fopen("C:\\файлы\\text4.txt", "rt");
if (fin == NULL) {
printf("Входной файл не найден");
return;
}
FILE* fout;
fout = fopen("C:\\файлы\\out4.txt", "wt");
if (fout == NULL) {
printf("Выходной файл не создался");
return;
}
int ch;
int is_letter = 0;
char word[MAX_LEN];
int word_len = 0;
while ((ch = getc(fin)) != EOF) {
if (isalpha((unsigned char)ch)) {
if (!is_letter) {
word_len = 0;
is_letter = 1;
}
if (word_len < MAX_LEN - 1) {
word[word_len++] = ch;
}
else {
}
}
else {
if (is_letter) {
word[word_len] = '\0';
fprintf(fout, "%s", word);
int isCaps = 0;
for (int i = 0; word[i] != '\0'; i++) {
if (isupper((unsigned char)word[i]))
isCaps = 1;
}
if (isCaps) {
fprintf(fout, "+");
printf("%s\n", word);
}
}
is_letter = 0;
fprintf(fout, "%c", ch);
}
}
if (is_letter) {
word[word_len] = '\0';
fprintf(fout, "%s", word);
int isCaps = 0;
for (int i = 0; word[i] != '\0'; i++) {
if (isupper((unsigned char)word[i]))
isCaps = 1;
}
if (isCaps) {
fprintf(fout, "+");
printf("%s\n", word);
}
}
fclose(fin);
fclose(fout);
printf("ЛР23 ЗАДАЧА 4 FINISH\n");
}
Помогите, пожалуйста, исправить!
Условие таково: считывается файл с текстом, если в строке есть слово с заглавной буквы, то после этого слова ставится "+". Код не работает на русском языке совсем, если же в файле строки на английском, то выводится только 1 слово...
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define BUFFER_SIZE 1024
#define IN_FILE "text4.txt"
#define OUT_FILE "out4.txt"
int main(void)
{
FILE *in, *out;
char buffer[BUFFER_SIZE];
char *token;
if (in = fopen(IN_FILE, "r")) {
out = fopen(OUT_FILE, "w");
fread(buffer, sizeof *buffer, BUFFER_SIZE, in);
token = strtok(buffer, " ");
do {
fputs(token, out);
if (isupper(token[0])) {
fputc('+', out);
}
fputc(' ', out);
} while (token = strtok(NULL, " "));
}
else {
fprintf(stderr, "%s open err\n", IN_FILE);
return -1;
}
return 0;
}
Это не код, а ерунда.