C stringlər

Salam mən C programlama dilində təzəyəm və oxudugum kitabda stringlərə aid 1 misal kod var və baça düçmədiyim hissə bu kodda enter e basdigdan sonra if də nə bas verir text char arrayinin 0 cı indexi niyə ‘\0’ olur və readLine funksiyyası içində nə baş verir wordCount funksiyasın yazmadım başa düşmüşəm deyə indidən təşəkkürlər cavablarınızdan ötrü

#include <stdlib.h>
#include<stdbool.h>
void readLine (char buffer[]){

	char character;
	int i = 0;
	do{
		character = getchar ();
		
		buffer[i] = character;
		++i;
	}while ( character != '\n' );
	
	buffer[i - 1] = '\0';
	
}

int main(void){

	char text[2];
	int totalWords = 0;
	bool endOfText = false;

	while(! endOfText){
		
		readLine (text);
		
		
	if ( text[0] == '\0' ){
		endOfText = true;
		
	}else{
		totalWords += countWords (text);
			
	}
}
	printf ("\nThere are %i words in the above text.\n", totalWords);
	

	return 0;
}

Yadda saxlama
Kateqoriya: Sual . . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (4 cavab var)

(20:27, 30/10/2016 ) #65738

Salam. readline funksiyası daxil olunan sətri verilən buferə yerləşdirir. Misal üçün istifadəçi Ahmed (5 simvol) yazıb enter basırsa Enter simvolu (‘\n’) da qəbul olunur və buferə yerləşdirilir. Bu eliyir 6 simvol. Ahmed + ‘\n’. Daha sonra readline funksiyası yeni sətir simvolun (enter düyməsi ilə əlavə olunan) buferdən silir: buffer[i – 1] = ‘\0’;
Yeni sətir simvolun ‘\n’ sətrin sonu ‘\0’ simvolu ilə əvəzləməklə. Əgər istiadəçi heçnə daxil etməyib sadəcə enter düyməsini basarsa onda bufer sadəcə bir – yeni sətir simvolundan ibarət olar ‘\n’, bufer[0] == ‘\n’. Indekslər 0-dan hesablanır. Onu da yeni sətir simvolu ilə əvəz etdikdə buferin ilk simvolu yəni buffer[0] olur ‘\0’ . if operatorunda da bu şərt yoxlanılır.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (23:41, 04/11/2016 ) #65814

    Salam Çox sagolun cavab üçün 1 də burda char array 2 di anca bəzən 2dən çox yazandada error vermir bunun səbəbi c nin type safety dedikləri işdə zəif olmagıdı?

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(16:52, 07/11/2016 ) #65854

C də ümumiyyətlə safety deyilən bir anlayış yoxdur. Kompilyator sizin yerinizə heçnəyi yoxlamır, ən azından unix platformasında belədir. O ki qaldı char arrayin 2 -dən çox yazını qəbul etməsinə. Bu işləyəcək. C də sətrin sonu ‘\0’ simvolu ilə müəyyə olunur. Əgər 2 -ölçülü char arrayə 3,5 və ya 15 simvol yazmısızsa deyək ki göstəricilərlə axırada sətrin sonu ‘\0’ simvolu , onda sətir normal işləyəcək. Amma extra simvollar yaddaşda başqa bir məlumatların üzərinə yazıla bilər. Bu isə çooox pis haldır. Ona görə double check hər şeyi, C – də proqram yazanda.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(00:25, 12/11/2016 ) #65912

Çox saöolun minnətdaram sizə cavabınız üçün

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

Emil Imanov cavab verdi - Rus dilindən mətni tərcümə etmək (2 saat əvvəl)

Software Developer cavab verdi - Payoneer kartdan pul çıxartdıqda vergi (2 gün əvvəl)

Software Developer cavab verdi - Wise vasitəsilə bank kartına pul köçürmə (5 gün əvvəl)

Software Developer cavab verdi - Rus dilindən mətni tərcümə etmək (6 gün əvvəl)

Cənab cavab verdi - Almanca söz bazası yığmaq (9 gün əvvəl)

rdrobert cavab verdi - Mikrofon süngərinə yazı (10 gün əvvəl)

rdrobert cavab verdi - Yerli virtual olaraq dost tapmaq platforması (10 gün əvvəl)

rdrobert cavab verdi - Almanca söz bazası yığmaq (10 gün əvvəl)

rdrobert cavab verdi - Playstation 4 almaq, Playsation klub açmaq (10 gün əvvəl)

rdrobert cavab verdi - Proqramistin ixtsasi hansidir? (10 gün əvvəl)

Software Developer cavab verdi - Azercell Kabinetim aplikasiyasında İstəSən tarifi haqqında (12 gün əvvəl)

Software Developer cavab verdi - Proqramistin ixtsasi hansidir? (12 gün əvvəl)

byshako cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (22 gün əvvəl)

rdrobert cavab verdi - Honeygain, passiv gelir (23 gün əvvəl)

rdrobert cavab verdi - Xaricdən telefon getirmek (23 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 607 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23237 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024