char数组输入空格

时间:2015-10-31 21:16:38

标签: c operating-system

我的程序工作正常,如果我给char * w =“ls -l”硬编码值,但我试图采取输入形式用户不工作帮助我的代码::使用输入错误发生 我不理解使用fgets的fgets的概念,它给了execv的garbig值

#include<stdio.h>
#include<sys/wait.h>
#include<stdbool.h>

void func(char **arr, char *w)
{
    int i = 0, j = 0, k = 0;

    char temp[100];

    for (i = 0; i < 100; i++)
    {
        if (w[i] == '')
        {
            arr[k] = temp;
            arr[k+1] = NULL;
            break;
        }
        if (w[i] == ' ')
        {
            arr[k] = temp;
            k++;
            j = 0;
        }
        else
        {
            temp[j] = w[i];
            j++;
        }

    }
}
int main()
{
    char *n = "/bin/ls";
    char *arr[10] = {''};
    char p[100] = {''};
    char *w = "ls -l";
    int i = 0;
    //printf("bilal-hassan-qadri $ >>");
    //fgets(p, 100, stdin);
    arr[2] = NULL;
    bool found = false;
    for (i = 0; i < sizeof(w); i++)
    {
        if (w[i] == ' ')
        {
            found=true;
            func(arr,w);
            break;
        }
    }
    if (!found)
      arr[0] = w;
    int status;
    int id = fork();
    if (id == 0)
    {
        if (execv(n,arr) < 0)
        {
            printf("invalid commandn");
        }
        else
        {
            printf("ninvalid command");
        }
    }
    else
    {
        wait(&status);
    }
}

1 个答案:

答案 0 :(得分:0)

  • 在函数$ scrapy shell http://www.oddsportal.com/basketball/usa/nba/results/ In [1]: fetch("http://fb.oddsportal.com/ajax-sport-country-tournament-archive/3/MmbLsWh8/X0/1/-1/1/?_=1446338252826") In [2]: import re In [3]: pattern = re.compile(r'"html":"(.*?)"}', re.MULTILINE | re.DOTALL) In [4]: import scrapy In [5]: selector = scrapy.Selector(text=pattern.search(response.body).group(1)) In [6]: # TODO: now use the selector to extract the desired data 中,您必须将字符串复制到func的元素 而不只是传递arr的地址,这将在离开函数时消失。 如果您的系统支持,则可以使用temp代替strdup
  • 您必须在复制之前终止copy_string中的字符串。
  • 空字符串常量temp似乎无效。你不应该使用它。
  • ''存储换行符fgets(如果存在)。如果不需要,请检查并删除。

固定代码:

\n