Форум программистов, компьютерный форум CyberForum.ru

Проверьте код на наличие ошибок. - C++

Восстановить пароль Регистрация
 
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
23.04.2010, 16:07     Проверьте код на наличие ошибок. #1
проверте пож, в чем ошибки????

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
 
int Read_File (char* str);
//Чтение из файла
int Read_File (char* str){
    char* fn; 
    FILE *f;
    //printf ("Enter File name: \n");
    //gets ("%s",fn);
    f=fopen("test.txt","r");
        if (!f){
            printf ("Warning: no such file. Using stdin.");
        }
    fseek(f,0,SEEK_END);
    long len = ftell (f);
    char* buf = new char [len+1];
    const int l_block = 1024;
    int num_block = len/l_block+1;
    fseek (f,0,SEEK_SET);
    fread (buf,l_block,num_block,f);
    buf[len] = '\0';
    puts(buf);
    strcpy(str, buf);
    fclose (f);
return 0;
}
 
int main(){
    char* str=NULL;
    Read_File (str);
    puts(str);
//Преобразования строки
    strlen(str);
    int num = strlen (str);
    char str1[]="abc" ;
    char str2[]="def" ;
    for (int i=0; i<num; i++){
        if (str[i]==str1[0] && str[i+1]==str1[1] && str[i+2]==str1[2]){
            str[i]=str2[0];
            str[i+1]=str2[1];
            str[i+2]=str2[2];
        }
    }
    puts(str);
//Запись в файл
    FILE *f=fopen ("test2.txt","w");
    if (!f){
            printf ("Warning: no such file. Using stdin.");
        }
    fputs (str);
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2010, 16:07     Проверьте код на наличие ошибок.
Посмотрите здесь:

Проверьте код C++
Проверьте код C++
Проверьте код пожалуйста C++
Проверьте код C++
Проверьте код C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
delfamur
 Аватар для delfamur
42 / 42 / 0
Регистрация: 16.03.2010
Сообщений: 199
23.04.2010, 16:18     Проверьте код на наличие ошибок. #2
ну как минимум в fputs надо добавить второй параметр
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
23.04.2010, 16:40  [ТС]     Проверьте код на наличие ошибок. #3
это исправил))). Но программа у меня все равно не запускается(((
вот что выдает:

Проверьте код на наличие ошибок.
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
23.04.2010, 17:08  [ТС]     Проверьте код на наличие ошибок. #4
Ну что даже проверить некому???
delfamur
 Аватар для delfamur
42 / 42 / 0
Регистрация: 16.03.2010
Сообщений: 199
23.04.2010, 18:49     Проверьте код на наличие ошибок. #5
так она на си чистом написана. для вижуал другие правила, но это кже не ко мне
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.04.2010, 19:11     Проверьте код на наличие ошибок. #6
Ошибок на самом деле много... Например

Цитата Сообщение от robert19 Посмотреть сообщение
char* str=NULL;
реально память под массив char нигде не выделяется, и вдруг где-то в функции, в которую передаётся этот указатель, инициированный значением NULL
Цитата Сообщение от robert19 Посмотреть сообщение
strcpy(str, buf);
куда должно значение buf скопироваться?

Добавлено через 2 минуты
Цитата Сообщение от robert19 Посмотреть сообщение
C++
1
2
3
f=fopen("test.txt","r"); 
if (!f)
  { printf ("Warning: no such file. Using stdin."); }
Вот этот момент тоже понравился... Не удалось файл открыть - да и ладно! Выругались и дальше работаем...
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
23.04.2010, 19:30  [ТС]     Проверьте код на наличие ошибок. #7
Вот исправил все свои ошибки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
int main(){
    char* str=NULL;
    char fn[255]; 
    FILE *f;
    printf ("Enter File name: \n");
    gets(fn);
    f=fopen(fn,"r");
        if (!f){
            printf ("Warning: no such file. Using stdin.");
                        f=stdin;
        }
    fseek(f,0,SEEK_END);
    long len = ftell (f);
    char* buf = new char [len+1];
    
    const int l_block = 1024;
    int num_block = len/l_block+1;
    fseek (f,0,SEEK_SET);
    fread (buf,l_block,num_block,f);
    buf[len] = '\0';
    
    puts(buf);
        
    int num = strlen(buf);
    char str1[]="abc" ;
    char str2[]="def" ;
    for (int i=0; i<num-2; i++){
        if (buf[i]==str1[0] && buf[i+1]==str1[1] && buf[i+2]==str1[2]){
            buf[i]=str2[0];
            buf[i+1]=str2[1];
            buf[i+2]=str2[2];
        }
    }
    printf("%s \n",buf);
 
    char fnr[255];
    FILE *ff;
    printf ("Enter File name: \n");
    gets(fnr);
    ff=fopen (fnr,"w");
    if (!ff){
        printf ("Warning: no such file. Using stdin."); 
                f=stdin;
    }
    fputs (buf,ff);
    fclose (f);
    fclose (ff);
return 0;
}
Помогите на функции разбить
salvafion
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 193
23.04.2010, 21:04     Проверьте код на наличие ошибок. #8
C++
1
2
3
4
 if (!ff){
                printf ("Warning: no such file. Using stdin."); 
                f=stdin;
        }
теж писали что дальше уже не работать а то получается у тя файл не смог создаться а ты потом в него еще что -то запихать собрался тут как минимум return должен быть ну или цикл для повторного ввода

Добавлено через 1 минуту
вот так сделай
C++
1
2
3
4
5
 
        if (ff=fopen (fnr,"w")==NULL){
                printf ("Warning: no such file. Using stdin."); 
                return;
        }
Добавлено через 1 минуту
ну и здесь так же f=fopen(fn,"r");
if (!f){
printf ("Warning: no such file. Using stdin.");
f=stdin;
}
ну а если уж хочешь этот стандартный поток использовать тогда уж во втором if поставь еще одну f в названии указателя

Добавлено через 2 минуты
и на какие там функци разбить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
void Vyzov(){
        char* str=NULL;
        char fn[255]; 
        FILE *f;
        printf ("Enter File name: \n");
        gets(fn);
        f=fopen(fn,"r");
                if (!f){
                        printf ("Warning: no such file. Using stdin.");
                        f=stdin;
                }
        fseek(f,0,SEEK_END);
        long len = ftell (f);
        char* buf = new char [len+1];
        
        const int l_block = 1024;
        int num_block = len/l_block+1;
        fseek (f,0,SEEK_SET);
        fread (buf,l_block,num_block,f);
        buf[len] = '\0';
        
        puts(buf);
                
        int num = strlen(buf);
        char str1[]="abc" ;
        char str2[]="def" ;
        for (int i=0; i<num-2; i++){
                if (buf[i]==str1[0] && buf[i+1]==str1[1] && buf[i+2]==str1[2]){
                        buf[i]=str2[0];
                        buf[i+1]=str2[1];
                        buf[i+2]=str2[2];
                }
        }
        printf("%s \n",buf);
 
        char fnr[255];
        FILE *ff;
        printf ("Enter File name: \n");
        gets(fnr);
        ff=fopen (fnr,"w");
        if (!ff){
                printf ("Warning: no such file. Using stdin."); 
                f=stdin;
        }
        fputs (buf,ff);
        fclose (f);
        fclose (ff);
 
}
int main()
{
 Vyzov();
return 0;
}
можешь в main еще ввести что нить типа имени файла и строки а потом их уже передать ы ф-цию
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
24.04.2010, 09:28  [ТС]     Проверьте код на наличие ошибок. #9
Ну собственно исправил кое что еще. И разбил на функции. Но выдает ошибку такую же как на выше

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
 
int Read_File (char* str);
int Changing_String (char* str);
int File_Console (char* str);
 
 
int Read_File (char* str){
    char fn[255]; 
    FILE *f;
    printf ("Enter File name: \n");
    gets(fn);
    f=fopen(fn,"r");
        if (!f){
            printf ("Warning: no such file. Using stdin.");
            return 1;
        }
    fseek(f,0,SEEK_END);
    long len = ftell (f);
    char* buf = new char [len+1];
    
    const int l_block = 1024;
    int num_block = len/l_block+1;
    fseek (f,0,SEEK_SET);
    fread (buf,l_block,num_block,f);
    buf[len] = '\0';
    strcpy(str,buf);
    puts(str);
    fclose(f);
return 0;
}
 
int main(){
    char* str=NULL;
    Read_File (str);
    Changing_String (str);
    File_Console (str);
 
return 0;
}
 
int Changing_String (char* str){
    int num = strlen(str);
    char str1[]="abc" ;
    char str2[]="def" ;
    for (int i=0; i<num-2; i++){
        if (str[i]==str1[0] && str[i+1]==str1[1] && str[i+2]==str1[2]){
            str[i]=str2[0];
            str[i+1]=str2[1];
            str[i+2]=str2[2];
        }
    }
    puts(str);
return 0;
}
 
int File_Console (char* str){
    char fnr[255];
    FILE *ff;
    printf ("Enter File name: \n");
    gets(fnr);
    ff=fopen (fnr,"w");
    if (!ff){
        printf ("Warning: no such file. Using stdin.");
        return 1;
    }
    fputs (str,ff);
    fclose (ff);
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2010, 11:49     Проверьте код на наличие ошибок.
Еще ссылки по теме:

Проверьте, на наличие ошибок C++
Проверьте блок схему на предмет ошибок C++
C++ Посмотрите код на наличие ошибки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
salvafion
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 193
24.04.2010, 11:49     Проверьте код на наличие ошибок. #10
ну так правильно, а кто память выделять на строку будет???char* str=NULL; это что? ты тут просто занулил ее ...зачем???
char* str=new char; вот так
Yandex
Объявления
24.04.2010, 11:49     Проверьте код на наличие ошибок.
Ответ Создать тему
Опции темы

Текущее время: 06:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru