DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   Problem with string search of an array (http://www.daniweb.com/forums/thread17720.html)

cricket Jan 30th, 2005 1:58 pm
Problem with string search of an array
 
I am just learning C/C++. My problem is to determine if a character is or isn't within an array then returning an appropriate message to the user. I've only gotten this far using 'strchr' without much success. Any suggestions or help would be appreciated. Should I be using pointers instead within the function?

Thank you

Program Char Search */

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char check(char c, char str);

main()

{ char response;
char strg[] = "Array test";
printf("%s\n", strg);

{ Printf("Enter the character you would like to search for.");

Scanf(" %c\n", &response);
}

/*function 'check'*/
{
char check(char str[],char c);
str = strg;
c = response;
scanf("strchr: %s\n",&strg);

if strchr=c
printf("The character is %s\n",c);
}





return 0;
}

Siersan Jan 30th, 2005 2:41 pm
Re: Problem with string search of an array
 
Using strchr it would look something like this.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int check(char str[], int search);

int main(void)
{
  char buf[BUFSIZ];
  int ch;

  printf("Enter a string: ");
  fflush(stdout);
  if (fgets(buf, sizeof buf, stdin) == NULL)
    return EXIT_FAILURE;

  printf("Enter a character to search for: ");
  fflush(stdout);
  if ((ch = getchar()) == EOF)
    return EXIT_FAILURE;

  if (check(buf, ch))
    printf("%c was found\n", ch);
  else
    printf("%c was not found\n", ch);

  return EXIT_SUCCESS;
}

int check(char str[], int search)
{
  return strchr(str, search) != NULL;
}
You can also do it manually if you want.
int check(char str[], int search)
{
  int i;

  for (i = 0; str[i] != '\0'; i++) {
    if (search == str[i])
      return 1;
  }

  return 0;
}

cricket Jan 30th, 2005 2:51 pm
Re: Problem with string search of an array
 
Thank you very much. I will try this.

vegaseat Jan 31st, 2005 12:32 pm
Re: Problem with string search of an array
 
[QUOTE=Siersan]Using strchr it would look something like this.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int check(char str[], int search);

int main(void)
{
  char buf[BUFSIZ];
  int ch;

  printf("Enter a string: ");
  fflush(stdout);
  if (fgets(buf, sizeof buf, stdin) == NULL)
    return EXIT_FAILURE;

  printf("Enter a character to search for: ");
  fflush(stdout);
  if ((ch = getchar()) == EOF)
    return EXIT_FAILURE;

  if (check(buf, ch))
    printf("%c was found\n", ch);
  else
    printf("%c was not found\n", ch);

  return EXIT_SUCCESS;
}

int check(char str[], int search)
{
  return strchr(str, search) != NULL;
}
Just a friendly note:
fgets() will append a \n to the string, if you then just press enter at the character search prompt you will find the \n. The answer will be: was found

Narue Jan 31st, 2005 1:28 pm
Re: Problem with string search of an array
 
>if you then just press enter at the character search prompt you will find the \n.
That's reasonable (and expected) behavior. Let's say you want to test for exceptionally long lines:
while (fgets(buffer, sizeof buffer, stdin) != NULL && !check(buffer, '\n')) {
  /* Append buffer to a dynamic string */
}
If you don't want to find the newline, then remove it before the test, or verify the value of the search character as being neither EOF nor '\n'.

vegaseat Jan 31st, 2005 5:22 pm
Re: Problem with string search of an array
 
Quote:

Originally Posted by Narue
>if you then just press enter at the character search prompt you will find the \n.
That's reasonable (and expected) behavior.

No argument with that! It's the result telling me that an invisible character was found that can be confusing to the user.


All times are GMT -4. The time now is 1:50 am.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC