小编Rom*_*omy的帖子

';' 输入中的字符被误解了

我写了一个程序来使用';'来分割输入字符串 作为终结符并打印在';'之后的字符串部分.每当子串跟随';'时,程序显示正确的输出 在输入字符串中不是有效的终端命令,但也打印command not found.另一方面,当子串后跟';'时,它不会打印任何内容 是一个有效的终端命令,并将子串作为命令执行,例如,如果输入"sjhjh; ls",它将执行ls命令.

我如何摆脱这command not found部分?这是代码:

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

int main(int argc, char *argv[])
{
    char * input;
    char * str;
    char * word;
    char terminator = ';';

    if (argc < 2) {
         fprintf(stderr,"ERROR, no string provided\n");
         exit(1);
     }

     input = argv[1];
     word = strchr(input, terminator);
     if (word != NULL) printf("%s\n", word);
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

c shell

5
推荐指数
1
解决办法
176
查看次数

使用fscanf()读取一行

我试图使用fscanf()从文件中读取一行:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fp;
    char c, *string[4];
    int i = 0,j[4];
    fp = fopen("boil.txt", "r");
    c = fgetc(fp);
    if(fp == NULL)
    { printf("File read error\n");
        exit(0);
    }

    while(c != '\n')
    {
        fscanf(fp, "%s %d ", string[i] , &j[i]);
        i++;
        c = fgetc(fp);
    }
    for(i = 0; i < 4; i++)
    {
        printf("%s      %d\n", string[i], j[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

boil.txt如下:

boil 4 boilmilk 3 boilwater 5 heat 10
Run Code Online (Sandbox Code Playgroud)

为什么这个程序会给出分段错误?

c scanf segmentation-fault

0
推荐指数
1
解决办法
881
查看次数

标签 统计

c ×2

scanf ×1

segmentation-fault ×1

shell ×1