C 如何在“确定”之前添加前面的消息?
我想在输入文件中的每个ok前面添加一条消息,例如: 然而,我并没有完全明白我只是明白了: 我怎样才能得到信息,然后得到确认 输入文件: E201022011101F p PBC 问题7 Q6676666 Q76767 M84E2010201F M27PBC 这是正确的代码: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;
#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);
}
请重新格式化代码,使其清晰易读。