obsługa stringów w języku c

obsługa stringów w języku c
0

Witam
Piszę kawałek kodu, który automatyzuje działanie polecenia ping.
Trafiłem na pewien problem ze stringami.
W jaki sposób w pętli przypisywać do char*napis przypisywać pewną stałą wartość np "192.168.2."
Przedstawię kawałek kodu z którym nie mogę sobie poradzić

while(i<=255)
{
napis = "192.168.0."
koncowy_oktet = i;
i++;
itoa(koncowy_oktet,koncowy,10);
strcat(napis,koncowy);
system(napis);
}

_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:8 dni
2
Kopiuj
for(i=0;i<256;++i)
  {
   char napis[32];
   sprintf(napis,"ping 192.168.0.%d",i);
   system(napis);
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 5 lat
  • Postów:2412
0
Kopiuj
char buffer[32];
while(...) {
  strncpy(buffer, "foobar", sizeof(buffer));
  // ...
}

Tylko nie wiem po co chcesz kopiowac w petli ten ciag. Nie mozesz go raz przypisac poza petla?

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 7 godzin
  • Lokalizacja:Szczecin
0

Nie masz prawa zmieniać (np. za pomocą strcat) string literala, nawet jeśli w C legalne jest przypisanie go do char*.

itoa nie jest funkcją standardową, lepiej używaj czegoś standardowego, np. snprintf:

Kopiuj
char buf[15];
snprintf(buf, 15, "192.168.0.%d", koncowy_oktet);

0

Dziękuję.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.