Strcmp() błąd kompilatora

0
#include <stdio.h>
#include <stdlib.h>
#include<ctype.h>
#include<string.h>
#define ROZMIAR 80
int szukaj(char tab[], char c);
int main()
{
    int wynik;
    char arg1[ROZMIAR];
    char znak;
    scanf("%s %c", arg1, &znak);
    wynik = szukaj(arg1,znak);
    if (wynik != NULL)
        printf("Znalazlem znak %c pod adresem %p.", znak, wynik);
    else printf("Znalazlem tylko %d.", wynik);
    return 0;
}

int szukaj(char tab[], char c){
int rozmiar, temp, *pointer;
char tznak;
rozmiar = strlen(tab);
for (temp = 0; temp < rozmiar; temp++){
        tznak = tab[temp];
    if (strcmp(tznak, c) == 0){
        *pointer = &tab[temp];
        return *pointer;
    } else return NULL;
}
}
}

Podaje wyraz i znak, program szuka tego znaku w wyrazie, jak znajdzie ma zwrócić adres tego znaku.
Nie wiem czemu przy

 if (strcmp(tznak, c) == 0) 

kompilator wywala mi program z komunikatem
Program received signal SIGSEGV, Segmentation fault.

0

po else powinno być continue; ale to bez znaczenia dla Was.

1

Po co używasz strcmp do porównywania dwóch charów? :|
No i to nie jest błąd kompilatora.

0
Patryk27 napisał(a):

Po co używasz strcmp do porównywania dwóch charów? :|
No i to nie jest błąd kompilatora.

uczę się z książki szkoła programowania język C i robię różne rzeczy, więc do czego używać strcmp skoro nie do porównywania 2 charów?
i z ciekawości skoro to nie błąd kompilatora to co to za komunikat? oczywiście wygooglowałem i wyczytałem, że program próbuje odwołać się do pamięci która do niego nie należy lub próbuje modyfikować pamięć tylko do odczytu.

0

strcmp do porównywania dwóch c-string'ów (napisów).
Napis (c-string) może być wpisany do tablicy char'ów

1

Proszę:

#include <stdio.h>


// #define DEBUG

#ifdef DEBUG
#define log printf
#else
#define log(...)
#endif


char *pos(char *buffer, char character)
{
  for (; *buffer != 0; buffer++) {
    log("%c: %p\n", *buffer, buffer);
    if (*buffer == character) {
      return buffer;
    }
  }
  return NULL;
}

int main(int argc, char **argv)
{
  char *input;
  char character;
  scanf("%s %c", input, &character);

  char *result = pos(input, character);
  if (result) {
    printf("%c: %p\n", character, result);
  } else {
    printf("%c: --\n", character);
  }
  return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1