how can i utilize strings as a parameter in functions? Using vex coding studio… Currently getting and error message with this code:
error message: 5:05:36 – warning – warning: result of comparison against a string literal is unspecified (use strncmp instead) -Wstring-compare]
} else if (dir == “left”){
^ ~~~~~~
./main.cpp:70:20:
void turn(char dir, double target) {
if (dir == "right"){
// turn right to target
} else if (dir == "left"){
// turn left to target
}
task::sleep(50);
}
Interestingly enough, the compiler is telling you how to fix it by using strcmp() function:
if ( strcmp( dir, "right" ) ==0 ) {
}
dir should be declared as:
*char *dir
*
**Man page for strcmp()
**
STRCMP(3) BSD Library Functions Manual STRCMP(3)
NAME
strcmp, strncmp -- compare strings
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <string.h>
int
strcmp(const char *s1, const char *s2);
int
strncmp(const char *s1, const char *s2, size_t n);
DESCRIPTION
The strcmp() and strncmp() functions lexicographically compare the null-
terminated strings s1 and s2.
The strncmp() function compares not more than n characters. Because
strncmp() is designed for comparing strings rather than binary data,
characters that appear after a `\0' character are not compared.
RETURN VALUES
The strcmp() and strncmp() functions return an integer greater than,
equal to, or less than 0, according as the string s1 is greater than,
equal to, or less than the string s2. The comparison is done using
unsigned characters, so that `\200' is greater than `\0'.
SEE ALSO
bcmp(3), memcmp(3), strcasecmp(3), strcoll(3), strxfrm(3), wcscmp(3)
STANDARDS
The strcmp() and strncmp() functions conform to ISO/IEC 9899:1990
(``ISO C90'').
BSD October 11, 2001 BSD