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;
}






Verilmiş cavablar və yazılan şərhlər (4 cavab var)
1
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.
0
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ı?
1
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.
0
Çox saöolun minnətdaram sizə cavabınız üçün
Sual verin
Cavab verin