Bir dizenin ilk üç harfini C ile nasıl kaldırırım?D ile ilk üç karakter C ile nasıl kaldırılır?
cevap
void chopN(char *str, size_t n)
{
assert(n != 0 && str != 0);
size_t len = strlen(str);
if (n > len)
return; // Or: n = len;
memmove(str, str+n, len - n + 1);
}
Alternatif tasarım: Örneğin
size_t chopN(char *str, size_t n)
{
assert(n != 0 && str != 0);
size_t len = strlen(str);
if (n > len)
n = len;
memmove(str, str+n, len - n + 1);
return(len - n);
}
+1, ama aslında, (aslında onaylama yerine -1) karakter sayısını yazdıran int olarak daha iyi olmaz mıydı? –
@Tim: Her türlü olası tasarım var; Bu kabaca minimal bir uygulama - genel olarak, ödevin erken dönüşten daha iyi olduğunu düşünüyorum. Dönüş değeri - azaltılmış uzunluğa geri dönerek iyi olurdu - büyük olasılıkla girdi gibi 'size_t' olurdu. –
C dizesi, sürekli konumlarda bir dizi karakterdir. Dizinin boyutunu artıramaz veya azaltamayız. Ancak orijinal boyut eksi 3'ün yeni bir karakter dizisi oluşturun ve karakterleri yeni diziye kopyalayın.
pointer 3 ila ekleyin:
char *foo = "abcdef";
foo += 3;
printf("%s", foo);
bir dize (http://pw1.netcom.com/~tjensen/ptr/pointers.htm) içine indeksleme, "def"
Eh, dize kopya (http://en.wikipedia.org/wiki/Strcpy) hakkında bilgi yazdırmak ve yeniden deneyecek. pseudocode:
find the pointer into the string where you want to start copying from
copy from that point to end of string into a new string.
-1. Açıklama olmadan kod referanslara ve tamamen açık "pseudocode" linkleri daha iyidir. – pelesl
, ilk 3 karakterleri kaldırmak için
char a[] = "123456";
basit yolu varsa olacaktır:
char *b = a + 3; // the same as to write `char *b = &a[3]`
b "456"
içerecektir Ancak genel durumda da emin olmalısınız
Sadece '' nornot (char) '** yararsız ** değil, aynı zamanda diğer türler için ** yanlış **. İşaretçi aritmetiği, bayt değil öğelerin biriminde gerçekleşir. –
Evet, haklısınız. Cevabı düzenlediniz –
- 1. Bir karakter dizisinin ilk oluşumu hariç tüm bunlar nasıl kaldırılır?
- 2. UILabel'den üç nokta nasıl kaldırılır?
- 3. C++ dizgisinde ilk karakter nasıl bulunur?
- 4. Üç sütun ile uipickerview - xamarin C#
- 5. Amaç-C NSString karakter ile döngü içinAtIndex
- 6. PowerShell 2.0 PowerShell 2.0 ile karakter
- 7. Karakter xintercept ile geom_vline
- 8. önceden tanımlanmış bir 2-D karakter dizisi
- 9. “{0: d}” ile dize biçimlendirmesi,
- 10. Dizindeki ilk karakter dizisini silme
- 11. C++ D 2.0
- 12. C# içindeki bir dizenin ilk ve son karakteri nasıl kaldırılır?
- 13. İlk 0'lar (sıfır), C# 2.0'daki dizeden nasıl kaldırılır
- 14. JSTL etiketi ile EL kaçış Karakter nasıl?
- 15. İlk karakter, ifstream'de kayboluyor
- 16. dplyr ile gruptaki ilk fark
- 17. D dilinde C++ (C) çağrısı
- 18. Üç kullanıcıyla ilk kez tetikleyici denetimleri
- 19. Bir öğenin içeriği JQuery ile nasıl kaldırılır?
- 20. Tuşa basma jquery ile girişten nasıl kaldırılır?
- 21. AngularJS'de filtre ile diziden öğe nasıl kaldırılır?
- 22. OpenTok - El ile nasıl yayınlanır/yayından kaldırılır?
- 23. CommandManager.RegisterClassInputBinding ile eklenen giriş bağlaması nasıl kaldırılır?
- 24. Django-ckeditor ile yüklenen görseller nasıl kaldırılır?
- 25. Diğer tüm satırlar sed ile nasıl kaldırılır?
- 26. Dnu ile bir paket nasıl kaldırılır?
- 27. Bileşenler Kale 3.0 ile nasıl kaldırılır?
- 28. PHPQuery ile bir HTML etiketi nasıl kaldırılır?
- 29. GitHub, geçmişi ile birlikte nasıl kaldırılır?
- 30. OOXML'de 'ilk' sayfayı C# ve SDK ile nasıl edinebilirim?
aştı değil dize uzunluğu "plz göndermek teh codez !! 1" - "Hayır" – delnan
'str = str + 3;' str + = 3; 'bir yorum için çok kısa! –