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


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