Autor Tópico: Problemas com C no linux  (Lida 3967 vezes)

Offline Alex_Sigma

  • Usuário Ubuntu
  • *
  • Mensagens: 8
    • Ver perfil
Problemas com C no linux
« Online: 09 de MAR?O de 2012, 12:15 »
olá, estou a um tempão tentando programar C no linux mas estou tendo muita dificuldade em resolver um problema, sempre programei no windows e estou tentando conhecer o linux nessa parte de programação, mas eis o que ocorre:
tento compilar o seguinte código no CodeBlocks apertando F9:

#include <stdio.h>
#include <ncurses.h>

main()
{
    int i=0, V[5];
    printf ("Digite um Vetor: \n");
    for(i=1;i<=5;i++)
    {
        scanf("%d", &V);
    }
    system("pause");
}

e o terminal me passa a seguinte mensagem:

/home/ruan/Códigos em C/Teste: 7 Syntax error: word unexpected (expecting ")")

Alguém me aponte onde está o erro, já fiz várias modificações mas permanece o erro, já vi em alguns sites que a programação em C no linux sofre algumas mudanças mas nunca citam algo mais profundo além de dizer que não tem uma biblioteca ou tem outra nova, será que além de me dizer onde está o erro alguem poderia me mostrar um código escrito no windows e como ele ficaria no linux?
obrigado desde já  ???
« Última modificação: 09 de MAR?O de 2012, 12:19 por Alex_Sigma »

Darcamo

  • Visitante
Re: Problemas com C no linux
« Resposta #1 Online: 09 de MAR?O de 2012, 16:10 »
Fiz algumas modificações no seu programa e consegui fazer funcionar aqui.
Código: [Selecionar]
#include <stdio.h>
#include <ncurses.h>

main()
{
    int i, V[5];
    printf ("Digite um Vetor: \n");
    for(i = 0; i < 5; i++)
    {
        scanf("%d", &V[i]);
    }
   
    printf ("%s\n","Valores Gravados");

    for (i = 0; i < 5; ++i)
    {
        printf ("%d\n",V[i]);
    }
}

Como "V" é um vetor e você quer gravar diferentes elementos nele dentro do laço for, então o correto seria usar "&V" no scanf. Ele também compila apenas com "V" (não precisa do "&" porque "V" é um vetor e por isso já é o endereço da primeira posição), mas nesse caso você sempre vai gravar na posição 0.

Removi o system("pause"). Além de não funcionar no Linux (não tem "pause") usar a função system só para isso não é bom. Não lembro agora a melhor solução, mas você deve encontrar sem problemas.

Adicionei um outro laço para mostrar que os valores realmente foram gravados no vetor.

Offline sigur

  • Usuário Ubuntu
  • *
  • Mensagens: 1.176
    • Ver perfil
Re: Problemas com C no linux
« Resposta #2 Online: 09 de MAR?O de 2012, 16:15 »
Fiz algumas modificações no seu programa e consegui fazer funcionar aqui.
Código: [Selecionar]
#include <stdio.h>
#include <ncurses.h>

main()
{
    int i, V[5];
    printf ("Digite um Vetor: \n");
    for(i = 0; i < 5; i++)
    {
        scanf("%d", &V[i]);
    }
   
    printf ("%s\n","Valores Gravados");

    for (i = 0; i < 5; ++i)
    {
        printf ("%d\n",V[i]);
    }
}

Como "V" é um vetor e você quer gravar diferentes elementos nele dentro do laço for, então o correto seria usar "&V" no scanf. Ele também compila apenas com "V" (não precisa do "&" porque "V" é um vetor e por isso já é o endereço da primeira posição), mas nesse caso você sempre vai gravar na posição 0.

Removi o system("pause"). Além de não funcionar no Linux (não tem "pause") usar a função system só para isso não é bom. Não lembro agora a melhor solução, mas você deve encontrar sem problemas.

Adicionei um outro laço para mostrar que os valores realmente foram gravados no vetor.

No seu código, você colocou para i de 0 a 4? No dele tinha de 1 a 5? Seria aí o erro?

Darcamo

  • Visitante
Re: Problemas com C no linux
« Resposta #3 Online: 09 de MAR?O de 2012, 17:29 »
Não era esse o erro, mas isso também era um erro.
Como o vetor V foi declarado com tamanho 5 então ele vai de 0 a 4. Se tentar acessar mais que isso terá problemas.

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: Problemas com C no linux
« Resposta #4 Online: 10 de MAR?O de 2012, 09:56 »
Não era esse o erro, mas isso também era um erro.
Como o vetor V foi declarado com tamanho 5 então ele vai de 0 a 4. Se tentar acessar mais que isso terá problemas.

Este é um dos problemas com o código... Eis mais alguns:

- Em C não se declara funções com lista de parâmetros vazios. Isso é C++, não C;
- Em C a função main() deveria retornar um int, SEMPRE...
- 'system("pause")' é usado para executar o comando pause em COMMAND.COM, não no 'bash';
- scanf não sabe se o ponteiro aponta para um item único ou um array.

O código deveria ser mais ou menos assim:

Código: [Selecionar]
#include <stdio.h>

int main(void)
{
  int i=0, V[5];

  printf ("Digite um Vetor: \n");

  for (i=0; i<5; i++)
  {
    scanf("%d", &V[i]);
  }

  return 0;
}

Node que:

- Retirei a inclusão do header ncurses.
- Retireo o system() (que é definido em stdlib.h, acho).
- estou obtendo os ponteiros dos itens do array individualmente, dentro do loop.
- retorno 0 em main().

[]s
Fred

Offline Alex_Sigma

  • Usuário Ubuntu
  • *
  • Mensagens: 8
    • Ver perfil
Re: Problemas com C no linux
« Resposta #5 Online: 10 de MAR?O de 2012, 19:04 »
@fpissara
copiei o código igualmente para o meu codeblocks e olha só:

http://imageshack.us/f/13/capturadetelaem20120310.png/

que maldito erro de sintaxe é esse? ¬¬

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: Problemas com C no linux
« Resposta #6 Online: 11 de MAR?O de 2012, 11:40 »
@fpissara
copiei o código igualmente para o meu codeblocks e olha só:

que maldito erro de sintaxe é esse? ¬¬

Não faço a mínima idéia:
Código: [Selecionar]
$ cat test.c
#include <stdio.h>

int main(void)
{
  int i=0, V[5];

  printf ("Digite um Vetor: \n");

  for (i=0; i<5; i++)
  {
    scanf("%d", &V[i]);
  }

  return 0;
}
$ gcc -o test test.c
$ ./test
Digite um Vetor:
1
2
3
4
5
$

Offline sigur

  • Usuário Ubuntu
  • *
  • Mensagens: 1.176
    • Ver perfil
Re: Problemas com C no linux
« Resposta #7 Online: 11 de MAR?O de 2012, 15:36 »
@fpissara
copiei o código igualmente para o meu codeblocks e olha só:

http://imageshack.us/f/13/capturadetelaem20120310.png/

que maldito erro de sintaxe é esse? ¬¬

Minha opinião: erro de encode de caractere, ou seja, se você copiou o texto daqui do forum e deu um 'colar' no seu editor, pode ser que algum caractere não tem o mesmo endereçamento do teclado. Pra mim, o problema está nas aspas duplas ". Tente apaga-las e digitar na mão, você mesmo.

Quando fui copiar e colar uns comandos para colocar no .inputrc, tive esse tipo de problema.

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: Problemas com C no linux
« Resposta #8 Online: 11 de MAR?O de 2012, 19:36 »
@fpissara
copiei o código igualmente para o meu codeblocks e olha só:

http://imageshack.us/f/13/capturadetelaem20120310.png/

que maldito erro de sintaxe é esse? ¬¬

Minha opinião: erro de encode de caractere, ou seja, se você copiou o texto daqui do forum e deu um 'colar' no seu editor, pode ser que algum caractere não tem o mesmo endereçamento do teclado. Pra mim, o problema está nas aspas duplas ". Tente apaga-las e digitar na mão, você mesmo.

Quando fui copiar e colar uns comandos para colocar no .inputrc, tive esse tipo de problema.

Ok.... se vc colar no Windows pode ser que isso aconteça, de fato... Ubuntu usa UTF-8, Windows usa uma variação do ISO-8859-1 (WINDOWS-1252). Só lembro que esse forum é dedicado ao UBUNTU...

[]s
Fred

Offline Samuel Vorpagel

  • Usuário Ubuntu
  • *
  • Mensagens: 2
    • Ver perfil
Re: Problemas com C no linux
« Resposta #9 Online: 15 de MAR?O de 2012, 15:21 »
ou o Code::Blocks não reconheceu o GCC, tente compilar o codigo direto no terminal.
gcc nomeprograma.c
para executar
./a.out


Offline brunokewell7

  • Usuário Ubuntu
  • *
  • Mensagens: 1
    • Ver perfil
Re: Problemas com C no linux
« Resposta #10 Online: 26 de Maio de 2012, 22:26 »
sou iniciante em programação, só que preciso fazer um trabalho pra facul...
só que estou tendo problemas com a <ncurses.h>
consegui instalar só não consegui iniciar ela,
se alguém puder me ajudar ...