C++ – The compiler complains with “Error: stray ‘\240’ in program”

arrayscfunctionmatrixpointers

It is wanted of me to implement the following function:

void calc ( double* a, double* b, int r, int c, double (*f) (double) )

Parameters a, r, c and f are input and b is output. “a” and “b” are two-dimensional matrices with “r” rows and “c”
columns. “f” is a function pointer which can point to any function of the following type:

double function‐name ( double x ) {
    …
}

Function calc converts every element in matrix a, i.e., aij, to bij=f(aij) in matrix b.


I implement the calc function as follows, and put it in a program to test it:

#include <stdlib.h>
#include <iostream>

using namespace std;

double f1(double x){
    return x * 1.7;
}

void calc (double* a, double* b, int r, int c, double (*f) (double))
{
    double input;
    double output;

    for(int i=0; i<r*c; i++)
    {
        input = a[i];
        output = (*f)(input);
        b[i] = output;
    }
}

int main()
{
    // Input array:
    int r=3;
    int c=4;
    double* a = new double[r*c];
    double* b = new double[r*c];

    // Fill "a" with test data
    //...

    for (int i=0; i<r*c; i++)
    {
        a[i] = i;
    }

    // Transform  a to b
    calc(a, b, r, c, f1);

    // Print to test if the results are OK
    //...

    for (int i=0; i<r*c; i++)
    {
        b[i] = i;
    }

    return 0;
}

The problem is, I can't compile it. This is the output of DevC++ when I click on Compile and Execute button:

Compilation errors referring to invalid characters

What's wrong?

I appreciate any comment to make the implementation more efficient.

Best Answer

As mentioned in a previous reply, this generally comes when compiling copy pasted code. If you have a Bash shell, the following command generally works:

iconv -f utf-8 -t ascii//translit input.c > output.c