我写了一个程序来使用';'来分割输入字符串 作为终结符并打印在';'之后的字符串部分.每当子串跟随';'时,程序显示正确的输出 在输入字符串中不是有效的终端命令,但也打印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) 我试图使用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)
为什么这个程序会给出分段错误?