c-strings

Dlaczego pojawia się błąd segmentacji podczas pisania do "char *s" zainicjalizowanego literalnym łańcuchem znaków, ale nie "char s[]"?

Następujący kod otrzymuje błąd seg w linii 2: char *str = "string"; str[0] = 'z'; // could be also written as *str = 'z' p ... tr); Podczas gdy to działa doskonale: char str[] = "string"; str[0] = 'z'; printf("%s\n", str); Testowane z MSVC i GCC.

Dlaczego pojawia się błąd segmentacji podczas pisania do łańcucha inicjalizowanego "char *s", ale nie "char s[]"?

Następujący kod otrzymuje błąd seg w linii 2: char *str = "string"; str[0] = 'z'; printf("%s\n", str); Podczas gdy to działa doskonale: char str[] = "string"; str[0] = 'z'; printf("%s\n", str); Testowane z MSVC i GCC.

Jak konwertować CString i std:: string STD:: wstring na siebie?

CString jest bardzo poręczny, natomiast {[4] } jest bardziej kompatybilny z kontenerem STL. Używam hash_map. Jednak hash_map ... src.GetString()); Czy jest z tym jakiś problem? Dodatkowo, jak Mogę przekształcić z std::wstring na std::string i odwrotnie?

C-podziel ciąg na tablicę ciągów

Nie jestem do końca pewien jak to zrobić w C: char* curToken = strtok(string, ";"); //curToken = "ls -l" we will say //I need a array of strings containing "ls", "-l", and NULL for execvp() Jak miałbym to zrobić?

Jaki jest czas życia wyniku std::string:: C str()?

W jednym z moich programów, muszę połączyć się z jakimś starszym kodem, który działa z const char*. Powiedzmy, że mam strukt ... is about to be destroyed, before name and server } Czy mam od razu skopiować wynik c_str() do w innym miejscu ? Dziękuję.

Jaka jest różnica między memcmp, strcmp i strncmp w C?

Napisałem ten mały fragment kodu w C, aby przetestować memcmp() strncmp() strcmp() Funkcje W C. Oto kod, który napisałem: ... w oraz memcmp() i strncmp() w poleceniach if zwrócono 0.Z drugiej strony strcmp() nie. wygląda na to, że muszę użyć strcmp().

Czy można wydrukować tylko określony fragment łańcucha C, bez tworzenia osobnego podłańcucha?

Powiedzmy, że mam: char* string = "Hello, how are you?"; Czy jest możliwe wypisanie tylko ostatnich 5 bajtów tego łańcucha? A co z pierwszymi 5 bajtami? Czy istnieje jakaś odmiana printf, która by na to pozwoliła?

Czy źle jest deklarować ciąg w stylu C bez const? Jeśli tak, to dlaczego?

Robienie tego w C++ char* cool = "cool"; Kompiluje dobrze, ale daje mi Ostrzeżenie: Przestarzała konwersja ze stałej ... zadano mi to pytanie: Czy błędną praktyką jest deklarowanie ciągu w stylu C bez modyfikatora const? Jeśli tak, to dlaczego?