has triggered a breakpoint

240
28 ноября 2017, 22:42

При выполнении выдаёт ошибку

has triggered a breakpoint

Как это исправить?

#include "stdafx.h"
#include <stdio.h>
#define MAX_STR_SIZE 0x666  // Maximum string length
#define MIN_STR_SIZE 0x5    // Minimum string length
#pragma warning(disable:4996)
int main()
{
    int ch;
    int count = 0;
    int p = 0;
    FILE *fp;
    char buff[MAX_STR_SIZE];
    if ((fp = fopen("C:\asm\123.txt", "rb")) == NULL)
        while ((ch = getc(fp)) != EOF)
        {
            if (ch<' ' || ch>'z')
            {
                if (count>(MIN_STR_SIZE - 2))
                    if (count>p)
                    {
                        printf(&buff[0]);
                    }
                    else
                    {
                        printf("%08x:%s\n", ftell(fp), &buff[0]);
                    }
                p = 0; count = 0;
            }
            else
            {
                buff[p++] = ch; buff[p] = 0; count++;
                if (p == (MAX_STR_SIZE - 1))
                {
                    printf("%08x:%s\n", ftell(fp), &buff[0]);
                    p = 0;
                }
            }
        }
    return 0;
}
Answer 1

Гм!

if ((fp = fopen("C:\asm\123.txt", "rb")) == NULL)
    while ((ch = getc(fp)) != EOF)
    ...

Т.е. если файл НЕ открылся, то вы начинаете из него читать... Понятно, что получается не то, что вы хотите.

И, кстати, не забывайте, что в строковых литералах \ имеет особый смысл (начало управляющей (escape) последовательности), так что имя файла должно записываться как

"C:\\asm\\123.txt"

Дальше ошибки не искал.

Answer 2

Нужно экранировать символы \. И еще момент, ты начинаешь чтение файла если он не открылся. Поэтому строку:

if ((fp = fopen("C:\asm\123.txt", "rb")) == NULL)

нужно заменить на:

if ((fp = fopen("C:\\asm\\123.txt", "rb")) != NULL)
READ ALSO
Задача с двумерными массивами С++

Задача с двумерными массивами С++

В общем ребят, есть задача с двумерными массивамиУсловие : расставить на шахматном поле 2 белых и 2 черных слона произвольным образом и определить,...

235
Присвоение значения переменной в c++ переданной по указателю

Присвоение значения переменной в c++ переданной по указателю

Как с помощью конструктора копирования из string присвоить значению, на которое ссылается temp, значение m?

195
List C++ Удаление конкретного элемента List

List C++ Удаление конкретного элемента List

Нужно удалить второй элемент из listВсе работает как надо

196