я не могу найти синтаксис ошибки в цикле для: c - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть упражнение, которое просит меня исправить синтаксическую ошибку, которую я пытался исправить, но каждый раз, когда я хочу скомпилировать ее, появляется ошибка в цикле for.

(упражнение позволяет подсчитывать и отображатьколичество гласных букв в предложении, введенное пользователем, пользователь указывает на конец записи, набирая '*')

#include <stdio.h>
main(){
char c;
char TV[5];
int k;
for (k = 0; k < 5; k++)
 {
 TV[k]=0;
  }
 printf("Entrer un texte. Tapez le caractére * pour sortire. \n");
 c = getchar();
while(c!='*')
{
  switch (c) {
     case 'A': TV[0]++;
     case 'a': TV[0]++;
     case 'E': TV[1]++;
     case 'e': TV[1]++;
     case 'I': TV[2]++;
     case 'i': TV[2]++;
     case 'O': TV[3]++;
     case 'o': TV[3]++;
     case 'U': TV[4]++;
     case 'u': TV[4]++;
    default: c = getchar();

   }
 }
 printf("a \t e \t i \t o \t u \n");
 for(k=0;k<5;k++)
 {
  printf("%d \t",TV[k]);
 }
 }

сообщение об ошибке:

mariem@MIGI:~/Bureau/syt_exp$ gcc Tp6-lesChaines-Exercice1.c
Tp6-Channels-Exercise1.c:2:1: warning: return type defaults to ‘int’ [-Wreturn-type]
 main(){
 ^~~~
mariem@MIGI:~/Bureau/syt_exp$ ./Tp6-lesChaines-Exercice1.c
./Tp6-Channels-Exercise1.c: line 6: syntax error near the unexpected symbol "("
./Tp6-Channels-Exercise1.c: line 6: `for (k = 0; k <5; k ++) '

Я думаюсейчас лучше.

Ответы [ 4 ]

0 голосов
/ 21 декабря 2018

Несколько вещей ...

1 - чтобы исправить предупреждение - main(){ должно быть int main(){ ИЛИ даже void main(){ работает, но тип возврата int является наиболее стандартным здесь.входные параметры являются необязательными - т.е. argv / argc.

2- после компиляции (что вы делаете правильно), без указания имени исполняемого файла, по умолчанию .exe, создаваемый компилятором, является либо a.out, либо a.exe.чтобы запустить, введите ./a.exe в командной строке.

Примечание - выполнив эти 2 действия, я подтвердил, что программа работает.

0 голосов
/ 21 декабря 2018

Почему у вас нет объявленного типа main ()?

int main()
0 голосов
/ 21 декабря 2018

Вы пытаетесь выполнить исходный файл C непосредственно в оболочке, как если бы это был сценарий оболочки.C необходимо скомпилировать, а затем выполнить файл, созданный компилятором.

Имя по умолчанию для этого, которое создает GCC, - a.out, поэтому выполните его с ./a.out

0 голосов
/ 21 декабря 2018

Я не вижу синтаксическую ошибку.И я не могу скопировать код, чтобы проверить с моим компилятором.Однако:

main должен быть объявлен как

int main(int argc, char **argv)

Ваш цикл: while (c=='*') ??Вы имеете в виду while (c!='*').

И: case должен завершаться break;, в противном случае выполнение просто продолжается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...