Kodumdaki hata nedir?

nolonger

Hectopat
Katılım
27 Şubat 2021
Mesajlar
153
Bu kodumda ben shell_buffer verisinden argümanları ayırmayı ve ; gelince yeni komuta geçmesini istiyorum fakat şuan sadece ilk komutu alıyor.
Sizce nerde hata yaptım?

[CODE lang="c" title="Kod"]#include <string.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
char *c(char *s){
char *comm = strtok(s, " ");
strtok(s, comm);
return s;
};
int main()
{

char shell_buffer[] = "echo naber;echo iyi";
char *token = strtok(shell_buffer, ";");
while( token != '\0' ) {
printf(c(token));
token = strtok('\0', ";");
}

}
[/CODE]
 
Son düzenleyen: Moderatör:
C++:
#define _CRT_SECURE_NO_WARNINGS

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int main()
{
    char* token;
    char shell_buffer[] = "echo naber;echo iyi";

    token = strtok(shell_buffer, ";");

    while (token != NULL)
    {
        printf("%s\n", token);
        token = strtok(NULL, ";");
    }
    return 0;
}
 
İstediğim tam olarak bu değil. Öbür kodumda argümanları da ayırıyordum bunda da ayırmam gerekiyor.

C++:
#define _CRT_SECURE_NO_WARNINGS

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int main()
{
 char* token;
 char shell_buffer[] = "echo naber;echo iyi";

 token = strtok(shell_buffer, ";");

 while (token != NULL)
 {
 printf("%s\n", token);
 token = strtok(NULL, ";");
 }
 return 0;
}
 
Yine anlamadım 😀
Ekrana böyle mi yazdırmak istiyorsunuz:

1.jpg

Yoksa böyle mi?

2.jpg
 
C++:
#define _CRT_SECURE_NO_WARNINGS

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

char* c(char* metin, int baslangic, int uzunluk)
{
    char* icerik = new char[uzunluk + 1];
    for (int i = 0; i < uzunluk; i++)
    {
        icerik[i] = *(metin + baslangic + i);
    }
    icerik[uzunluk] = 0;
    return icerik;
}

int main()
{
    char* token;
    char shell_buffer[] = "echo naber;echo iyi";

    token = strtok(shell_buffer, ";");

    while (token != NULL)
    {
        printf("%s\n", c(token, 0, 4));
        token = strtok(NULL, ";");
    }
    return 0;
}
 
Uzunluk belirtmeden yapılamaz mı?
C++:
#define _CRT_SECURE_NO_WARNINGS

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

char* c(char* metin, int baslangic, int uzunluk)
{
    char* icerik = new char[uzunluk + 1];
    for (int i = 0; i < uzunluk; i++)
    {
        icerik[i] = *(metin + baslangic + i);
    }
    icerik[uzunluk] = 0;
    return icerik;
}

int main()
{
    char* token;
    char shell_buffer[] = "echo naber;echo iyi";

    token = strtok(shell_buffer, ";");

    while (token != NULL)
    {
        printf("%s\n", c(token, 0, 4));
        token = strtok(NULL, ";");
    }
    return 0;
}
 
Uzunluk belirtmeden yapılamaz mı?

C++:
#define _CRT_SECURE_NO_WARNINGS

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

char* c(char* metin)
{
    int index = 0;
    char* icerik = new char[4 + 1];
    for (int i = 0; i != strlen(metin); i++)
    {
        if (metin[i] == ' ')
        {
            index = i;
            break;
        }
        icerik[i] = metin[i];
    }
    icerik[index] = 0;
    return icerik;
}

int main()
{
    char* token;
    char shell_buffer[] = "echo naber;echo iyi";

    token = strtok(shell_buffer, ";");

    while (token != NULL)
    {
        printf("%s\n", c(token));
        token = strtok(NULL, ";");
    }
    return 0;
}
 

Yeni konular

Geri
Yukarı