我很感激我能得到任何帮助。我不确定我完全理解这个程序。我尝试运行它时也遇到以下错误。 我还被告知在第15行我试图修改一个char数组。我该怎么办?谢谢你看看。
structFinal.c: In function print_part':
structFinal.c:14: error: invalid operands to binary %
structFinal.c: In function main':
structFinal.c:36: error: syntax error before ']' token
#include <stdio.h>
#define NAME_LEN 25
typedef struct {
int number;
char name[NAME_LEN+1];
int on_hand;
} part;
void print_part(part p[], int ind) {
int i;
printf("Whole List\n");
for(i = 0; i< ind; i++)
{
if(p[ind].name % 2 == 0)
printf("Part number: %d\n", p[ind].number);
printf("Part name: %s\n", p[ind].name);
if(p[ind].on_hand < 5)
printf("Quantity on hand: %d\n", p[ind].on_hand);
}
printf("%d\n", p[ind].number);
fgets(p[ind].name,50,fp);
fscanf(fp, "%d", &p[ind].on_hand);
printf("%s\n----%d\n", p[ind].name, p[ind].on_hand);
ind++;
fscanf(fp, "%d", &p[ind].number);
a = fgetc(fp);
} print_part(p[ ] , ind);
fclose(fp);
return 0;
编辑:我刚刚在Netbeans的Ubuntu计算机上试过这个并运行了。我们假设在 Unix 中运行它,那就是它失败了。我输了。
编辑:到目前为止,这是我的最终文件。我很确定这有效。
#include <stdio.h>
#define NAME_LEN 25
typedef struct {
int number;
char name[NAME_LEN+1];
int on_hand;
} part;
void print_part(part p[], int ind) {
int i;
printf("Whole List\n");
for(i = 0; i< ind; i++)
{
printf("Part number: %d\n", p[i].number);
printf("Part name: %s\n", p[i].name);
printf("Quantity on hand: %d\n", p[i].on_hand);
}
}
int main() {
/* first try, input only one set and print it */
part p[50];
int ind=0;
FILE *fp;
fp = fopen("structTest.txt", "r");
fscanf(fp, "%d", &p[ind].number);
char a;
a = fgetc(fp); /* extract the return symbol out of input buffer */
while (p[ind].number != 0)
{
while (a != '\n')
{
a = fgetc(fp);
}
printf("%d\n", p[ind].number);
fgets(p[ind].name,50,fp);
fscanf(fp, "%d", &p[ind].on_hand);
printf("%s\n----%d\n", p[ind].name, p[ind].on_hand);
ind++;
fscanf(fp, "%d", &p[ind].number);
a = fgetc(fp);
}
print_part(p , ind);
fclose(fp);
return 0;
}
/ * 代码是固定的,因此它将在部件号后面的所有空格中取出 输入。 getchar while循环将保持一个字符到var a 直到达到返回键 * /
答案 0 :(得分:1)
这里你最后有一些角色。注意到`哪个不属于那里?
if(p[ind].name % 2 == 0)`
这个
print_part(p[ ] , ind);
应该是
print_part(p , ind);
答案 1 :(得分:1)
p [ind] .name是一个字符数组,你不能对它运行modulu操作。
您可以在数字上运行% - 整数。
在字符串上执行模块的逻辑意义是什么? (字符数组)
假设你有abcde的数组内容是什么是abcde%2?