【发布时间】:2011-12-06 02:00:31
【问题描述】:
我已经查看了其他相关问题,但没有一个对这个案例有帮助。
我收到了问题标题中列出的警告,main 的代码如下:
int main( int argc, char *argv[] ) {
char *rows;
int i, n;
printf("\nEnter the amount of rows in the telephone pad: ");
scanf("%d", &n);
rows = (char *) malloc( sizeof( char ) * n );
printf("\nNow enter the configuration for the pad:\n");
for( i = 0; i < n; i++ ) {
scanf("%s", &rows[i]);
printf("\n\t%s\n", rows[i]);
}
return 0;
}
用户将输入一个数字(例如 4),该数字将被扫描到n。该空间被分配给电话垫的行。然后,用户将输入n 行数以配置电话板。一个例子是:
123
456
789
.0.
所以我很困惑为什么我的最后一个printf 语句会出现此错误。
注意:我也尝试了scanf("%s", rows[i]);:仍然出现错误。
注意2:我还是尝试运行该程序。出现分段错误。
注意 3:我的 .c 程序顶部有 #include <stdio.h> 和 #include <stdlib.h>。
注意 4:我已经 gcc'ed 程序:gcc -ansi -pedantic -Wall tele.c。
感谢您的帮助。
【问题讨论】:
-
我猜你应该添加“作业”标签。
-
“所以我很困惑”——我对“so”这个词的使用感到困惑,因为你之前写的任何内容都不会影响你收到的错误信息。解决这些问题的方法是放弃所有先入之见,认真对待错误信息以及它们告诉你的内容。在这里,它告诉您
%s需要一个char*类型的参数,这当然是正确的,它还告诉您您提供的参数不是int类型......这当然也是正确的,因为rows[i]是char,当传递给可变参数函数时会提升为int。
标签: c segmentation-fault gcc-warning