Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在“确定”之前添加前面的消息?_C - Fatal编程技术网

C 如何在“确定”之前添加前面的消息?

C 如何在“确定”之前添加前面的消息?,c,C,我想在输入文件中的每个ok前面添加一条消息,例如: 然而,我并没有完全明白我只是明白了: 我怎样才能得到信息,然后得到确认 输入文件: E201022011101F p PBC 问题7 Q6676666 Q76767 M84E2010201F M27PBC 这是正确的代码: #include <string.h> #include <stdio.h> #include <stdlib.h> int foo(char* s) { int valid = 1;

我想在输入文件中的每个ok前面添加一条消息,例如:

然而,我并没有完全明白我只是明白了:

我怎样才能得到信息,然后得到确认

输入文件:

E201022011101F

p

PBC

问题7

Q6676666

Q76767

M84E2010201F

M27PBC

这是正确的代码:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int foo(char* s) {
int valid = 1;
int len = strlen(s);
if (len < 3)
    return 0;
int i = 0;
if (s[i] == 'E') {
    i++;
    if (s[i] == '0' || s[i] == '1' || s[i] == '2')
    {
        while (s[i] == '0' || s[i] == '1' || s[i] == '2')
            i++;
        if (s[i] != 'F' || i+1!=len)
            valid = 0;
    }
    else
        valid = 0;
}
else
    valid = 0;
return valid;
}
int eep(char* s) {
int valid = 1;
int len = strlen(s);
if (len < 1 || len == 2)
    return 0;
if (len == 1 && s[0] == 'P')
    return 1;
int i = 0;
if (s[i] == 'P') {
    i++;
    while ((i < len) && s[i] == 'B' && s[i + 1] == 'C')
        i+=2;
    if (i==len)
        valid = 1;
    else
        valid = 0;
}
else
    valid = 0;
return valid;
}
int op(char* s) {
int valid = 1;
int len = strlen(s);
if (len < 2 )
    return 0;
int i = 0;
int count = 0;
if (s[i] == 'Q') {
    i++;
    if (s[i] == '6' || s[i] == '7') {
        while (s[i] == '6' || s[i] == '7') {
            if (s[i] == '7')
                count++;
            i++;
        }
        if (i == len)
            valid = 1;
        else
            valid = 0;
    }
    else
        valid = 0;
}
else
    valid = 0;
if ((valid==1) && (count == 0 || count % 2 != 0))
    valid = 1;
else
    valid = 0;
return valid;
}
int ork(char* s) {
int valid = 1;
int len = strlen(s);
if (len < 4)
    return 0;
int i;
if (s[0] == 'M' && (s[1] >= '0' && s[1] <= '9') && (s[2] >= '0' && s[2] <= '9')) {
    char* ss = malloc((len - 2) * sizeof(char));
    int j = 0;
    for (i = 3; i < len; i++) {
        ss[j] = s[i];
        j++;
    }
    ss[j] = 0;
    valid = foo(ss); 
    if (valid != 1)
        valid = eep(ss);
    free(ss);
}
else
    valid = 0;
return valid;
}
int main(int argc, char** argv)
{
FILE* fp = NULL;
char* buff = NULL;
size_t len = 0;

if (argc > 1)
{
    fp = fopen(argv[1], "r");

    if (fp == NULL)
    {
        fprintf(stderr, "Can not open %s for reading.\n", argv[1]);
        exit(1);
    }
}
else
    fp = stdin;
int valid;
while (getline(&buff, &len, fp) != -1)
{
    buff[strlen(buff) - 1] = '\0';
    if (foo(buff) == 1)
        valid = 1;
    else if (eep(buff) == 1)
        valid = 1;
    else if (op(buff) == 1)
        valid = 1;
    else if (ork(buff) == 1)
        valid = 1;
    else
        valid = 0;
    if (valid == 1)
        printf("OK\n");
    else
        printf("FAIL\n");

}
free(buff); 

buff = NULL; 
len = 0;

return(0);
#包括
#包括
#包括
int foo(字符*s){
int valid=1;
int len=strlen(s);
if(len<3)
返回0;
int i=0;
如果(s[i]=“E”){
i++;
如果(s[i]='0'| | s[i]='1'| | s[i]='2')
{
而(s[i]='0'| | s[i]='1'| | s[i]='2')
i++;
如果(s[i]!=“F”| i+1!=len)
有效=0;
}
其他的
有效=0;
}
其他的
有效=0;
返回有效;
}
内部eep(字符*s){
int valid=1;
int len=strlen(s);
如果(len<1 | | len==2)
返回0;
如果(len==1&&s[0]==P')
返回1;
int i=0;
如果(s[i]=“P”){
i++;
而((i='0'和&s[1]='0'和&s[2]1)
{
fp=fopen(argv[1],“r”);
如果(fp==NULL)
{
fprintf(stderr,“无法打开%s进行读取。\n”,argv[1]);
出口(1);
}
}
其他的
fp=stdin;
int有效;
while(getline(&buff,&len,fp)!=-1)
{
buff[strlen(buff)-1]='\0';
如果(foo(buff)==1)
有效=1;
否则如果(eep(buff)==1)
有效=1;
否则如果(操作(增益)==1)
有效=1;
else如果(ork(buff)==1)
有效=1;
其他的
有效=0;
如果(有效==1)
printf(“OK\n”);
其他的
printf(“失败\n”);
}
免费(buff);
buff=NULL;
len=0;
返回(0);
}

请使用printf(“%s OK\n”,buff)替换printf行(“OK\n”)

因此,代码应该是:

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




int foo(char* s) {
int valid = 1;
int len = strlen(s);
if (len < 3)
    return 0;
int i = 0;
if (s[i] == 'E') {
    i++;
    if (s[i] == '0' || s[i] == '1' || s[i] == '2')
    {
        while (s[i] == '0' || s[i] == '1' || s[i] == '2')
            i++;
        if (s[i] != 'F' || i+1!=len)
            valid = 0;
    }
    else
        valid = 0;
}
else
    valid = 0;
return valid;
}

int eep(char* s) {
int valid = 1;
int len = strlen(s);
if (len < 1 || len == 2)
    return 0;
if (len == 1 && s[0] == 'P')
    return 1;
int i = 0;
if (s[i] == 'P') {
    i++;
    while ((i < len) && s[i] == 'B' && s[i + 1] == 'C')
        i+=2;
    if (i==len)
        valid = 1;
    else
        valid = 0;
}
else
    valid = 0;
return valid;
}

int op(char* s) {
    
int valid = 1;
int len = strlen(s);
if (len < 2 )
    return 0;
int i = 0;
int count = 0;
if (s[i] == 'Q') {
    i++;
    if (s[i] == '6' || s[i] == '7') {
        while (s[i] == '6' || s[i] == '7') {
            if (s[i] == '7')
                count++;
            i++;
        }
        if (i == len)
            valid = 1;
        else
            valid = 0;
    }
    else
        valid = 0;
}
else
    valid = 0;
if ((valid==1) && (count == 0 || count % 2 != 0))
    valid = 1;
else
    valid = 0;
return valid;
}
int ork(char* s) {
int valid = 1;
int len = strlen(s);
if (len < 4)
    return 0;
int i;
if (s[0] == 'M' && (s[1] >= '0' && s[1] <= '9') && (s[2] >= '0' && s[2] <= '9')) {
    char* ss = malloc((len - 2) * sizeof(char));
    int j = 0;
    for (i = 3; i < len; i++) {
        ss[j] = s[i];
        j++;
    }
    ss[j] = 0;
    valid = foo(ss); 
    if (valid != 1)
        valid = eep(ss);
    free(ss);
}
else
    valid = 0;
return valid;
}

int main(int argc, char** argv)
{
FILE* fp = NULL;
char* buff = NULL;
size_t len = 0;

if (argc > 1)
{
    fp = fopen(argv[1], "r");

    if (fp == NULL)
    {
        fprintf(stderr, "Can not open %s for reading.\n", argv[1]);
        exit(1);
    }
}
else
    fp = stdin;
int valid;
while (getline(&buff, &len, fp) != -1)
{
    buff[strlen(buff) - 1] = '\0';
    if (foo(buff) == 1)
        valid = 1;
    else if (eep(buff) == 1)
        valid = 1;
    else if (op(buff) == 1)
        valid = 1;
    else if (ork(buff) == 1)
        valid = 1;
    else
        valid = 0;
    if (valid == 1)
        printf("%s OK\n", buff);
    else
        printf("FAIL\n");

}
free(buff); 

buff = NULL; 
len = 0;

return(0);

}
#包括
#包括
#包括
int foo(字符*s){
int valid=1;
int len=strlen(s);
if(len<3)
返回0;
int i=0;
如果(s[i]=“E”){
i++;
如果(s[i]='0'| | s[i]='1'| | s[i]='2')
{
而(s[i]='0'| | s[i]='1'| | s[i]='2')
i++;
如果(s[i]!=“F”| i+1!=len)
有效=0;
}
其他的
有效=0;
}
其他的
有效=0;
返回有效;
}
内部eep(字符*s){
int valid=1;
int len=strlen(s);
如果(len<1 | | len==2)
返回0;
如果(len==1&&s[0]==P')
返回1;
int i=0;
如果(s[i]=“P”){
i++;
而((i='0'和&s[1]='0'和&s[2]1)
{
fp=fopen(argv[1],“r”);
如果(fp==NULL)
{
fprintf(stderr,“无法打开%s进行读取。\n”,argv[1]);
出口(1);
}
}
其他的
fp=stdin;
int有效;
while(getline(&buff,&len,fp)!=-1)
{
buff[strlen(buff)-1]='\0';
如果(foo(buff)==1)
有效=1;
否则如果(eep(buff)==1)
有效=1;
否则如果(操作(增益)==1)
有效=1;
else如果(ork(buff)==1)
有效=1;
其他的
有效=0;
如果(有效==1)
printf(“%s正常\n”,浅黄色);
其他的
printf(“失败\n”);
}
免费(buff);
buff=NULL;
len=0;
返回(0);
}

请重新格式化代码,使其清晰易读。